如何计算JavaScript数组对象?

Nik*_*iko 12 javascript oop object

当我有这样的JavaScript数组时:

var member = {
    "mother": {
        "name" : "Mary",
        "age" : "48"
    },
    "father": {
        "name" : "Bill",
        "age" : "50"
    },
    "brother": {
        "name" : "Alex",
        "age" : "28"
    }
}
Run Code Online (Sandbox Code Playgroud)

如何计算这个数组中的对象?!
我的意思是如何得到一个计数结果3,因为里面只有3个物体:母亲,父亲,兄弟?!

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

CMS*_*CMS 24

这不是一个数组,是一个对象文字,你应该迭代对象的自己的属性并计算它们,例如:

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
Run Code Online (Sandbox Code Playgroud)

hasOwnProperty应该使用该方法来避免迭代继承的属性,例如

var obj = {};
typeof obj.toString; // "function"
obj.hasOwnProperty('toString'); // false, since it's inherited
Run Code Online (Sandbox Code Playgroud)

  • @JP:`__count__`被标记为Gecko 1.9.3已废弃,(在Gecko 1.9.3a5pre中,(Firefox 3.7a5pre)它不再存在) (2认同)
  • @JP,您可以在迭代之前检查的内容是新的 ECMAScript 第 5 版 [`Object.keys`](https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/keys) 的存在方法,ES5 开始被所有主要的浏览器供应商实现,就像这样:`if (typeof Object.keys === "function") return Object.keys(obj).length;` (2认同)

小智 19

如果您在页面上使用jquery,这将有效:

$(member).toArray().length;
Run Code Online (Sandbox Code Playgroud)


小智 11

您可以尝试使用此代码,它在浏览器中完美运行:

Object.keys(object).length;
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以使用 Object.keys() 方法返回给定对象自己的可枚举属性的数组:

Object.keys(member).length;
Run Code Online (Sandbox Code Playgroud)


gna*_*arf 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++;
}
Run Code Online (Sandbox Code Playgroud)