Node.js从二维JSON数组中获取行

Node.js take row from 2 dimensional JSON array

本文关键字:数组 JSON 获取 二维 js Node      更新时间:2023-11-17

我有二维JSON数组。我可以从第一维度获取数据,如data["dimension-1"],但我不能从第二维度获取数据:data["dimension-1"]["dimension-2"]。从数组的第二个维度取单行的正确方法是什么?

data["dimension-1"]["dimension-2"]-似乎是一个对象,因此它应该看起来像:

var data = {
  "dimension-1" : {
    "dimension-2" : 'value'
  }
}
data["dimension-1"]["dimension-2"] // will display 'value'

然后你的方式就好了。

但如果是阵列

var data =[[1,2], [3,4]]

那么应该像这样访问它(索引是NUMERIC,而不是字符串或任何其他):

data[0][1] // will display 2

您有一个对象,其属性也是数组或对象的混合。如果您试图提取数据属性(即数组)的ID,则需要选择该属性,输入数组(第一项为0),该数组将返回另一个对象。然后只需选择属性。

在您的用例中,您需要以下内容:-

objectName.data[0].id

objectName["data"][0]["id"];

这是为了从数据属性中提取ID,数据属性如下(您提供的):-

var objectName = {
  "total_pages": 1424,
  "total_rows": 1424,
  "data": [
    {
      "id": 1525,
      "television_id": 1,
      // other stuff
      "categories": [
        {
          "id": 170,
          "title": "title"
        },
        {
          "id": 4,
          "title": "message"
        }
      ]
    }
  ]
}

二维JSON数组如下所示:

[
  ["a", "b", "c"], 
  ["d", "e", "f"], 
  ["g", "h", "i"]
]

假设您想访问第二列中的最后一列。即"f",那么您需要通过编号而不是名称来访问它。即:

data[1][2]

编辑:

简而言之,我原来的答案是正确的。您的二维数组可以通过索引进行访问。

然而,现在知道你的数据格式,我建议你:

使用库(例如lodash)为您提供简单而富有表现力的方法来查询数据

或者创建自己的函数。例如:

var category = getCategory(x.data, 1525, 170);
function getCategory(data, id, catId) {
    return data
      .filter(d => d.id === id)
      .map(d => d.categories
                 .filter(c => c.id === catId)
                 .map(c => c.title)
                 .shift()
          )
      .shift()
}

祝你好运!