我有一个 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);
它的作用是 -
- 迭代最外层数组
- 获取对象的键(这是正在迭代的数组的当前元素)
- 迭代此键的值(这是一个数组),并打印每个项目。
您可以使用 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/