获取 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 对象上的项目总数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章