如何在javascript中将普通对象数组转换为多级数组?
我的法线数组对象如下所示:如何在javascript中将普通对象数组转换为多级数组?,javascript,jquery,arrays,node.js,object,Javascript,Jquery,Arrays,Node.js,Object,我的法线数组对象如下所示: var b = [ {id: 1, name: 'England',parent_id: null}, {id: 2, name: 'Spain',parent_id: null}, {id: 3, name: 'Chelsea',parent_id: 1}, {id: 4, name: 'Manchester United',parent_id: 1}, {id: 5, name: 'Real Madrid',parent_i
var b = [
{id: 1, name: 'England',parent_id: null},
{id: 2, name: 'Spain',parent_id: null},
{id: 3, name: 'Chelsea',parent_id: 1},
{id: 4, name: 'Manchester United',parent_id: 1},
{id: 5, name: 'Real Madrid',parent_id: 2},
{id: 6, name: 'Barcelona',parent_id: 2},
{id: 7, name: 'Hazard',parent_id: 3},
{id: 8, name: 'Morata',parent_id: 3},
{id: 9, name: 'Pogba',parent_id: 4},
{id: 10, name: 'Lukaku',parent_id: 4},
{id: 11, name: 'Ronaldo',parent_id: 5},
{id: 12, name: 'Bale',parent_id: 5},
{id: 13, name: 'Messi',parent_id: 6},
{id: 14, name: 'Suarez',parent_id: 6},
];
我想将对象数组转换为如下所示:
var b = [
{
name: 'England',
children: [
{
name: 'Chelsea',
children: [
{name: 'Hazard'},
{name: 'Morata'}
]
},
{
name: 'Manchester United',
children: [
{name: 'Pogba'},
{name: 'Lukaku'}
]
}
]
},
{
name: 'Spain',
children: [
{
name: 'Real Madrid',
children: [
{name: 'Ronaldo'},
{name: 'Bale'}
]
},
{
name: 'Barcelona',
children: [
{name: 'Messi'},
{name: 'Suarez'}
]
},
]
}
];
它似乎将使用密钥parent\u id进行分隔
但我仍然对如何实现它感到困惑
如何像那样转换数组对象
请帮帮我,伙计们
b
因此它只包含父项id为null的项parent\u id
字段(可选,不在示例中)var b=[
{id:1,名称:'England',父_id:null},
{id:2,名称:'西班牙',父_id:null},
{id:3,名字:'Chelsea',家长id:1},
{id:4,名字:'曼联',家长id:1},
{id:5,名字:'皇家马德里',家长id:2},
{id:6,姓名:'Barcelona',家长id:2},
{id:7,名称:'Hazard',父_id:3},
{id:8,名字:'Morata',家长id:3},
{id:9,姓名:'Pogba',家长id:4},
{id:10,姓名:'Lukaku',家长id:4},
{id:11,名字:'罗纳尔多',父母{id:5},
{id:12,名称:'Bale',父_id:5},
{id:13,名字:'mesi',父母_id:6},
{id:14,姓名:'Suarez',家长id:6},
];
const done=b.filter(person=>!person.parent_id).map(person=>{
返回{
id:person.id,
姓名:person.name,
children:b.filter(child=>child.parent\u id==person.id)
}
});
console.log(完成)代码>或将其作为副本关闭。。。