访问JSON对象数组中的各个数组元素

时间:2017-10-28 05:14:27

标签: javascript json node.js

我有一个JSON对象数组 - 每个键在数组中有多个值,如下所示:

{
  "1": [
    "hi",
    "hello"
  ]
}

如何访问单个元素“hi”和“hello”?

我在下面试过但不起作用

//suppose var imdb = [] contains the above array of JSON object
for (var i = 0; i < imdb.length; i++) {
  var object = imdb[i];
  var strArray = JSON.stringify(object, null, 2);
  console.log(strArray) //prints the above
  console.log(imdb[1][0]) // throws error, was expecting to print "hi"
}

1 个答案:

答案 0 :(得分:2)

你可以这样做 -

let data = [
  {
  "1": [
    "hi",
    "hello"
    ]
  },

  {
   "2": [
     "hi again",
     "hello again"
    ]
  }
]

function foo(data) {
  data.forEach(obj => {
    for(let prop in obj) {
      obj[prop].forEach(x => console.log(x));
    }
  })
}


foo(data);

这是做什么的 -

  1. 遍历最外面的数组
  2. 获取对象的键(正在迭代的数组的当前元素)
  3. 遍历此键的值(这是一个数组),并打印每个项目。
  4. 您可以使用JSON.parse()从原始JSON响应中获取data的正确表示。

    对于原始代码,如果要在特定位置打印数组值,例如第一个对象的"hi"和第二个对象的“hi again”,这里是修改后的代码 -

    function bar(imdb) {
       // parse imdb first, then -
       for (var i = 0; i < imdb.length; i++) {
         var object = imdb[i];
         var objectKey = Object.keys(object)[0];
         console.log(object[objectKey][0]);
      }
    }
    

    Object.keys(object)[0]将返回您正在迭代的当前对象的键("1""2"),并使用object[objectKey][0],您可以在密钥值的0索引。