繁体   English   中英

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

[英]Checking if an object exists via .length

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

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

在这两种情况下,当我检查obj1.lengthobj2.length ,都会得到Undefined (请参阅警报)。 我们是否应该在所有变量(字符串或复杂对象)上使用.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);

您不能使用obj.length来检查对象的存在。 您必须计算key的数量。

尝试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); 

length属性只能像在Arrays上那样工作。

要获取任何对象上的属性数量,可以使用Object.keys方法,该方法返回对象上所有属性名称的数组。 像这样: Object.keys(Obj).length

isEnum

这是我常规的JavaScript单例,它是所有util的一部分。 库。

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

而且它在任何方面都比Object.keys更快。 万一您不小心将Array(而不是Object)放到了其参数中,它将正常工作。

它的用途恰恰是您需要使用它来检查对象是否为空或可枚举的,然后再决定是否对其进行迭代。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM