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