-1

可能重复:
如何测试来自 JSON 的空 Javascript 对象?

var test= {};

var incidentReport = {
      "place1": "n/a",
      "place2": "n/a",
      "place3": "n/a",
 }

以上是我的变量的两种外观。我尝试执行以下代码来测试它是否为空/看起来像 {}

if(test == "")

并尝试过

if(test == null)

也试过

if(!test)

有谁知道我哪里出错了?只是 JavaScript 和 JSON 的初学者。我正在做的事情是否被认为是回溯练习有没有更好的方法来宣布这个为空?

感谢您的支持

4

3 回答 3

2

使用 JSON.stringify

var test= {};
if(JSON.stringify(test).length==2)
alert('null')
于 2012-06-22T09:36:55.920 回答
1
if(test == "")

检查它是否为空字符串,所以这不起作用

if(test == null)

检查它是否null与“相似” undefined- 不是这种情况

if(!test)

检查它是否是一个假值,这也不是这种情况。

您必须检查是否存在子元素(属性):

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop)) return false;
    }
    return true;
}

if ( isEmpty(test) ){...}

非常重要的一点是.hasOwnProperty()- 这会检查它是否是对象的真实属性,而不仅仅是通过原型链继承。

于 2012-06-22T09:35:51.817 回答
0

这里的测试是一个对象。所以你必须检查他的对象中是否有任何优先级/元素。您可以尝试以下方法

var test= {};

function isEmptyObject(obj) {
   // This works for arrays too.
   for(var name in obj) {
       return false
   }
   return true
}

alert("is this object empty?" + isEmptyObject(test));​
于 2012-06-22T09:36:41.747 回答