获取 Json 对象上的项目总数? [复制]

Posted

技术标签:

【中文标题】获取 Json 对象上的项目总数? [复制]【英文标题】:Get total number of items on Json object? [duplicate] 【发布时间】:2012-11-26 18:56:08 【问题描述】:

可能重复:Length of javascript Object (ie. Associative Array)

我有一个类似的对象:

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 个项目),每秒必须执行很多次。如何更有效地获取商品数量?

【问题讨论】:

jsonArray 不是数组。 Object.keys(jsonArray).length; 一个对象没有长度属性,并且您的对象既不是数组也不是有效的 json。 【参考方案1】:

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

Object.keys(jsonArray).length;

更多详情请参阅How to list the properties of a javascript object的这个答案

【讨论】:

为什么要写Object.keys(...) 而不仅仅是keys(),它是双向的,这两者有什么区别??? Chrome v54 没有这个。【参考方案2】:

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

Object.keys(jsonArray).length

参考资料:

Object.keys。 Kangax's compat table。

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于获取 Json 对象上的项目总数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb - 填充项目限制并获取这些项目的总数

如何从 JSON 填充下拉项目? [复制]

jQuery json/jsonp 不获取 php 服务器上的项目

MFC-GetItemCount获取项目总数

访问 JSON 对象中的项目以获取获取请求

获取数组中的项目总数