JSFiddle:https://jsfiddle.net/pd08dgxu/1/
我需要检查JavaScript对象是否为空。假设,在这个小提琴中,Obj1不是空的(它包含下面的字段),但是Obj2是{}
。
在这两种情况下,当我检查obj1.length
或obj2.length
时,我会未定义(请参阅提醒)。我们不应该对所有变量使用.length
运算符检查是否存在,无论是字符串还是复杂对象?
function getObject() {
return { 'color' : 'red',
'title' : 'my title'
};
}
var myObj1 = getObject();
var myObj2 = {}; //empty object
alert('myObj1 Length = ' + myObj1.length + ' myObj2 Length = ' + myObj2.length);
答案 0 :(得分:1)
您无法使用obj.length
检查对象的存在。
您必须计算key
s的数量。
尝试Object.keys(Obj).length
function getObject() {
return { 'color' : 'red',
'title' : 'my title'
};
}
var myObj1 = getObject();
var myObj2 = {}; //empty object
console.log('myObj1 Length = ' + Object.keys(myObj1).length + ' myObj2 Length = ' + Object.keys(myObj2).length);

答案 1 :(得分:1)
length
属性仅在数组上有效。
要获取任何对象的属性数,可以使用Object.keys
方法,该方法返回对象上所有属性名称的数组。像这样:Object.keys(Obj).length
。
答案 2 :(得分:0)
这是我传统的JavaScript单例,它是我所有工具的一部分。库。
function isEnum(x){for(var i in x)return!0;return!1};
在任何方面它都比Object.keys快。如果你不小心在其参数中删除了一个数组而不是一个Object,它将正常工作。
在决定是否对象进行迭代之前,确切地使用它来检查对象是空的还是可枚举的。