106

可能重复:
Javascript 对象的长度(即关联数组)

我有一个类似于这个的对象:

var jsonArray = {
  '-1': {
    '-1': 'b',
    '2': 'a',
    '10': 'c'
  },
  '2': {
    '-1': 'a',
    '2': 'b',
    '10': 'a'
  },
  '5': {
    '-1': 'a',
    '2': 'a',
    '10': 'b'
  }
};

我试图获得它的长度,问题是jsonArray.length返回 5 而不是 3(这是它拥有的总项目)。数组相对较长(有 1000x2000 个项目),每秒必须执行很多次。如何更有效地获取项目数量?

4

3 回答 3

172

除了 kieran 的回答,显然,现代浏览器还有一个Object.keys功能。在这种情况下,您可以这样做:

Object.keys(jsonArray).length;

此答案中有关如何列出 javascript 对象的属性的更多详细信息

于 2012-12-08T22:52:02.957 回答
20

那是一个对象,你想计算它的属性。

Object.keys(jsonArray).length

参考:

于 2012-12-08T22:51:56.500 回答
6

那是你的实际代码吗?javascript 对象(这是你给我们的)没有长度属性,所以在这种情况下exampleArray.length返回 undefined 而不是 5。

这个 stackoverflow解释了对象和数组之间的长度差异,这个 stackoverflow显示了如何获取对象的“大小”。

于 2012-12-08T22:49:53.947 回答