[英]How to count JavaScript array objects?
當我有一個這樣的 JavaScript 對象時:
var member = {
"mother": {
"name" : "Mary",
"age" : "48"
},
"father": {
"name" : "Bill",
"age" : "50"
},
"brother": {
"name" : "Alex",
"age" : "28"
}
}
這個物體中的物體如何計數?!
我的意思是如何得到一個計數結果 3,因為里面只有 3 個對象:媽媽、爸爸、哥哥?!
如果它不是數組,那么如何將其轉換為 JSON 數組?
那不是數組,是對象文字,您應該遍歷對象自己的屬性並對其進行計數,例如:
function objectLength(obj) {
var result = 0;
for(var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// or Object.prototype.hasOwnProperty.call(obj, prop)
result++;
}
}
return result;
}
objectLength(member); // for your example, 3
應該使用hasOwnProperty
方法來避免迭代繼承的屬性,例如
var obj = {};
typeof obj.toString; // "function"
obj.hasOwnProperty('toString'); // false, since it's inherited
你可以試試這個代碼,它在瀏覽器中完美運行:
Object.keys(member).length;
如果您在頁面上使用 jquery,這將起作用:
$(member).toArray().length;
您可以使用 Object.keys() 方法返回給定對象自己的可枚舉屬性的數組:
Object.keys(member).length;
那不是一個數組,它是一個對象字面量。
您可以迭代對象屬性並計算它擁有的數量:
var count = 0;
for (var k in obj) {
// if the object has this property and it isn't a property
// further up the prototype chain
if (obj.hasOwnProperty(k)) count++;
}
var member = {
"mother": {
"name" : "Mary",
"age" : "48"
},
"father": {
"name" : "Bill",
"age" : "50"
},
"brother": {
"name" : "Alex",
"age" : "28"
}
}
console.log('member key size:' + Object.keys(member).length);
ref a good guy : https://stackoverflow.com/questions/5223/length-of-a-javascript-object
這是我的方法
function getObjectLength( obj )
{
var length = 0;
for ( var p in obj )
{
if ( obj.hasOwnProperty( p ) )
{
length++;
}
}
return length;
}
在我的實踐中,我是這樣工作的:
/*
* $.count(array) - Returns the number of elements in an array (immproved equivalent to .length property).
*/
$.count = function (array){
if(array.length)
return array.length;
else
{
var length = 0;
for ( var p in array ){if(array.hasOwnProperty(p)) length++;};
return length;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.