Node.js从2维JSON数组中取出行

时间:2016-04-03 11:17:24

标签: javascript arrays json node.js

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

3 个答案:

答案 0 :(得分:1)

二维JSON数组如下所示:

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

假设您要访问第二列中的最后一列。即" f",然后您需要通过数字而不是名称来访问它。即:

data[1][2]

修改

严格来说,我的原始答案是正确的。您的二维数组可以通过索引访问。

但是,现在知道您的数据格式,我建议:

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

或创建自己的功能。 e.g:

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()
}
祝你好运!

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您有一个对象,其属性也是数组或对象的混合。如果您尝试提取数据属性的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"
        }
      ]
    }
  ]
}