通过.length检查对象是否存在

时间:2017-10-25 14:32:44

标签: javascript jquery

JSFiddle:https://jsfiddle.net/pd08dgxu/1/

我需要检查JavaScript对象是否为空。假设,在这个小提琴中,Obj1不是空的(它包含下面的字段),但是Obj2是{}

在这两种情况下,当我检查obj1.lengthobj2.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);

3 个答案:

答案 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)

isEnum

这是我传统的JavaScript单例,它是我所有工具的一部分。库。

function isEnum(x){for(var i in x)return!0;return!1};

在任何方面它都比Object.keys快。如果你不小心在其参数中删除了一个数组而不是一个Object,它将正常工作。

在决定是否对象进行迭代之前,确切地使用它来检查对象是空的还是可枚举的。