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

标签 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"
}

最佳答案

你可以这样做 -

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. 迭代此键的值(这是一个数组),并打印每个项目。

您可以使用 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 索引处的元素。

关于javascript - 访问 JSON 对象数组中的各个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986495/

相关文章:

node.js - 无法启动nodejs程序,套接字: (87) the parameter is incorrect

javascript - 根据条件锁定和解锁

json - 仅当保存到变量时,powershell json转换问题才能纠正结果

javascript - 在 Flask/JavaScript 中返回两个响应

json - 如何使用 KQL extractjson 函数引用以 @ 符号开头的 XML 属性?

javascript - 使用 fork() 克服 node.js 内存限制?

javascript - 使用 Mapbox-gl-js 和 Django 的不同 map 图钉

javascript - John Resig 的 "Simple Javascript Inheritance"还可以吗?

javascript - 如何在 Javascript 中拆分字符串,但如果字符串位于引号之间则不拆分?

node.js - node-gyp 调试|释放配置变量