获取多维JSON变量的行数

Get number of rows of multidimensional JSON variable

本文关键字:变量 JSON 获取      更新时间:2023-09-26

我有一个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返回未定义。

有比更好的方法吗

var count = 0;
for (var i=1; i< Number.MAX_VALUE; i++){
  if (typeof data[i] != 'undefined')
    count = i;
}

怎么样

Object.keys(data).length

如果可以控制JSON格式,嵌套数组似乎是更好的选择。

如果没有,你可以运行类似的程序

var length = 0;
for (var i in data) {
    if (isFinite(i) && i > length)
        length = i;
}

您可以计算循环中的条目数,如下所示:

var length = 0;
for (var key in data) {
  if (data.hasOwnProperty(key)) {
    length++;
  }
}

但是,如果您可以控制返回的数据,那么返回数组而不是对象可能会更容易,因为数组已经具有所需的长度属性。

为什么不直接这样做,而不是分配数字属性?数组将具有您想要的长度属性:

var data = [
  [ 
    { Object },
    { Object },
     ...,
     ...
  ], 
  [
    { Object },
    { Object },
    ...,
    ...
  ]
]