在JSON[JavaScript]中访问子数组

在JSON[JavaScript]中访问子数组,javascript,json,Javascript,Json,您好,我有上面的JSON对象,我正在尝试访问类别中的父\u id,如下所示: var categories = [{ "categories": { "data": [{ "parent_id": 109, }, { "parent_id": 0, }] } }]; 这是使用带有ii['c

您好,我有上面的JSON对象,我正在尝试访问类别中的父\u id,如下所示:

var categories = [{
    "categories": {
        "data": [{
            "parent_id": 109,
        },
        {
            "parent_id": 0,
        }]
    }
}];
这是使用带有
i
的for循环。 我在谷歌上搜索过,我没有找到一个好的答案,有没有更干净的方法来访问JSON中的
parent\u id

编辑:我用这个实现了建议的解决方案,它100%能够访问JSON,但是Map()认为它们是未定义的。以下是我所做的:

categories.data[i].parent_id !== 0

类别

{
成功:没错,
类别:{
资料:[材料]
}
}

因此,
类别。数据不存在。因此,请尝试
categories.categories.data
,然后可能重写JSON结构。

您的categories变量是数组,因此必须从categories[i].categories.data[i]开始。家长id

尝试以下操作:

for(让项目分类){
for(让项目.类别.数据的数据){
console.log(data.parent\u id)
}

}
我相信这是一种使用阵列的干净而优雅的方式

*

array.filter(i=>i['categories']).map(i=> i['categories'].data[0]).filter(d=>d['parent_id']!==0.map(m =>m.parent_id)

排列 .filter(i=>i['categories'])//过滤器类别

.map(i=>i['categories'].data[0])//获取第一个数据

.filter(d=>d['parent\u id']!==0)//筛选出具有0的parent\u id

.map(m=>m.parent_id);//获取所需的父\u id


变量数组=[{
“类别”:{
“数据”:[{
“家长id”:109,
},
{
“父项id”:0,
}]
}
}];

console.log(array.filter(i=>i['categories']).map(i=>i['categories'].data[0]).filter(d=>d['parent_id']!==0.map(m=>m.parent_id))
phew这一点被严重忽视,因为我是以这种方式获得JSON结构的。谢谢你指出它,请接受我的答案。嘿,我喜欢这个解决方案,我实现了它,但是数据没有定义进入我的地图。我用它编辑了这个问题
let byParentId = new Map();
    for (let item of sample) {
      for (let data of item.categories.data) {
        if (data.parent_id !== 0) {
          if (!byParentId.has(data.parent_id)) {
            byParentId.set(data.parent_id, item.categories.data);
          } else {
            byParentId.get(data.parent_id).push(item.categories.data);
          }
        }
      }
    }