簡體   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