如何计算JavaScript数组对象?

时间:2010-04-22 17:24:35

标签: javascript oop object

当我有这样的JavaScript数组时:

var member = {
    "mother": {
        "name" : "Mary",
        "age" : "48"
    },
    "father": {
        "name" : "Bill",
        "age" : "50"
    },
    "brother": {
        "name" : "Alex",
        "age" : "28"
    }
}

如何计算此数组中的对象?!
我的意思是如何得到计数结果3,因为里面只有3个对象:母亲,父亲,兄弟?!< / p>

如果它不是数组,那么如何将其转换为JSON数组呢?

8 个答案:

答案 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;
    }
}