Arrays 如何从JSON访问嵌套数组中的对象?
我试图从listitem数组中获取名称,并将其打印/存储在变量中 结构如下:Arrays 如何从JSON访问嵌套数组中的对象?,arrays,json,node.js,multidimensional-array,Arrays,Json,Node.js,Multidimensional Array,我试图从listitem数组中获取名称,并将其打印/存储在变量中 结构如下: { "items": [ { "pagemap": { "listitem": [ { "name": "Transformers: The Last Knight" }, { "name": "Transformers: The Last Knight" }, { "name": "Transformer
{
"items": [
{
"pagemap": {
"listitem": [
{
"name": "Transformers: The Last Knight"
},
{
"name": "Transformers: The Last Knight"
},
{
"name": "Transformers: The Last Knight"
},
{
"name": "Despicable Me 3"
},
{
"name": "Slumber Party"
},
{
"name": "Everything, Everything"
},
{
"name": "Can We Still Be Friends?"
},
{
"name": "Transformers: The Last Knight"
},
{
"name": "Wonder Woman"
},
{
"name": "Transformers: The Last Knight"
}
]
}
}
我还是node.js的新手,我就是这样从JSON中提取它的
let{
items:[{
pagemap: {
listitem: [{
name
}]
}
}]
} = showList;
如何获取listitem中的所有名称并将其存储在变量中以便打印它们?
let listItem = [];
showList.forEach((item) => {
if(item && item.pagemap && item.pagemap.listitem){
item.pagemap.listitem.forEach((lItem) => {
if(lItem && lItem.name){
listItem.push(lItem.name)
}
})
}
})
const结果={
“项目”:[{
“页面地图”:{
“列表项”:[
{“名字”:“变形金刚:最后的骑士”},
{“名字”:“变形金刚:最后的骑士”},
{“名字”:“变形金刚:最后的骑士”},
{“名字”:“卑鄙的我3”},
{“姓名”:“睡眠党”},
{“名字”:“一切,一切”},
{“name”:“我们还能做朋友吗?”},
{“名字”:“变形金刚:最后的骑士”},
{“名字”:“神奇女侠”},
{“名字”:“变形金刚:最后的骑士”}
]
}
}]
};
仅函数名(listItem){
返回listItem.name;
}
函数resultItemsReducer(备注,项目){
returnmemo.concat(item.pagemap.listitem.map(仅名称));
}
const name=results.items.reduce(resultItemsReducer,[]);
console.log(名称)代码> 您可能想考虑使用JSONPATH。libs有一个基于路径查询JSON的工具。安装和使用指南如下:
关于您的问题,通过使用jsonpath,您只能访问JSON对象中的“name”属性,如下所示
var jsonpath = require('jsonpath');
var data = {
"items": [{
"pagemap": {
"listitem": [
{ "name": "Transformers: The Last Knight" },
{ "name": "Transformers: The Last Knight" },
{ "name": "Transformers: The Last Knight" },
{ "name": "Despicable Me 3" },
{ "name": "Slumber Party" },
{ "name": "Everything, Everything" },
{ "name": "Can We Still Be Friends?" },
{ "name": "Transformers: The Last Knight" },
{ "name": "Wonder Woman" },
{ "name": "Transformers: The Last Knight" }
]
}
}]
};
// query only name from all listitem
var allnames = jsonpath.query(data, "$.items[0].pagemap.listitem[*].name")
console.log(allnames)
/* console.log on allnames returns -
[ 'Transformers: The Last Knight',
'Transformers: The Last Knight',
'Transformers: The Last Knight',
'Despicable Me 3',
'Slumber Party',
'Everything, Everything',
'Can We Still Be Friends?',
'Transformers: The Last Knight',
'Wonder Woman',
'Transformers: The Last Knight' ]
*/
考虑为你的代码添加解释,以帮助用户理解。感谢答复,显然,它不显示日志时,我安慰。登录ListITEM数组知道它的工作,我想它没有,有其他的选择?感谢的反应,遗憾的是,它仍然不记录,这可能是什么问题?pagemap是一个项目的对象,里面有10个pagemaps,但我只想要上面发布的第一个pagemap,我仍然找不到访问itI中的名称的方法,我不确定你在找什么。我编辑了my response以包含您的对象,因此您只需单击运行此代码
。如果这仍然不是你所期望的,请告诉我。如果是,请提供预期输出。