获取多维JSON变量的行数

时间:2012-08-30 16:30:07

标签: javascript arrays json

我有一个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;
}

4 个答案:

答案 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 },
    ...,
    ...
  ]
]