我有一个PHP函数,它以
格式返回一个多级JSON对象var data = {
1 : {
1: { Object },
2: { Object },
...,
...
},
2: {
1: { Object },
2: { Object },
...,
...
}
}
我需要获得data
的长度来初始化for循环最大值。通过这个,我的意思是第一级条目的计数。
data[1].length
返回22,data[2].length
通过console.log
打印输出返回23。这是预期的,但data.length
返回undefined。
是否有比
更好的方法var count = 0;
for (var i=1; i< Number.MAX_VALUE; i++){
if (typeof data[i] != 'undefined')
count = i;
}
答案 0 :(得分:3)
怎么样
Object.keys(data).length
答案 1 :(得分:1)
如果您可以控制JSON格式,嵌套数组似乎是更好的选择。
如果没有,您可以运行类似
的内容var length = 0;
for (var i in data) {
if (isFinite(i) && i > length)
length = i;
}
答案 2 :(得分:1)
您可以计算循环中的条目数,如下所示:
var length = 0;
for (var key in data) {
if (data.hasOwnProperty(key)) {
length++;
}
}
但是,如果您可以控制返回的数据,则返回数组而不是对象可能会更容易,因为数组已经具有您想要的length属性。
答案 3 :(得分:0)
为什么不这样做而不是分配数字属性?数组将具有您希望的长度属性:
var data = [
[
{ Object },
{ Object },
...,
...
],
[
{ Object },
{ Object },
...,
...
]
]