当我有这样的JavaScript数组时:
var member = {
"mother": {
"name" : "Mary",
"age" : "48"
},
"father": {
"name" : "Bill",
"age" : "50"
},
"brother": {
"name" : "Alex",
"age" : "28"
}
}
如何计算此数组中的对象?!
我的意思是如何得到计数结果3,因为里面只有3个对象:母亲,父亲,兄弟?!< / p>
如果它不是数组,那么如何将其转换为JSON数组呢?
答案 0 :(得分:23)
这不是一个数组,是一个对象文字,你应该迭代对象的自己的属性并计算它们,例如:
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
答案 1 :(得分:18)
如果您在页面上使用jquery,这将起作用:
$(member).toArray().length;
答案 2 :(得分:9)
您可以尝试使用此代码,它可以在浏览器中完美运行:
Object.keys(object).length;
答案 3 :(得分:6)
这不是一个数组,它是一个对象文字。
您可以迭代对象属性并计算它拥有的数量:
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++;
}
答案 4 :(得分:4)
您可以使用Object.keys()方法返回给定对象自己的可枚举属性的数组:
Object.keys(member).length;
答案 5 :(得分:3)
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
答案 6 :(得分:2)
以下是我的做法
function getObjectLength( obj )
{
var length = 0;
for ( var p in obj )
{
if ( obj.hasOwnProperty( p ) )
{
length++;
}
}
return length;
}
答案 7 :(得分:0)
在我的练习中,我的工作方式如下:
/*
* $.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;
}
}