Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何从JSON访问嵌套数组中的对象?_Arrays_Json_Node.js_Multidimensional Array - Fatal编程技术网

Arrays 如何从JSON访问嵌套数组中的对象?

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

我试图从listitem数组中获取名称,并将其打印/存储在变量中

结构如下:

{
 "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以包含您的对象,因此您只需单击
运行此代码
。如果这仍然不是你所期望的,请告诉我。如果是,请提供预期输出。