我有一个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"
}
答案 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);
这是做什么的 -
您可以使用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
索引。