如何在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(完成)或将其作为副本关闭。。。