Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
Javascript 将具有父子关系的对象数组与另一个具有子值的对象数组合并_Javascript_Jquery_Es6 Modules - Fatal编程技术网

Javascript 将具有父子关系的对象数组与另一个具有子值的对象数组合并

Javascript 将具有父子关系的对象数组与另一个具有子值的对象数组合并,javascript,jquery,es6-modules,Javascript,Jquery,Es6 Modules,将一个具有父子关系的对象数组与另一个只有子值的对象数组合并,以获取将两个对象中的公共值组合在一起的对象结果数组 我有一个具有父子值的对象数组 submenu : [{ text: 'Website', permissionId : 900, submenu:[{ text: 'Publisher Site', permissionId : 901 }, { t

将一个具有父子关系的对象数组与另一个只有子值的对象数组合并,以获取将两个对象中的公共值组合在一起的对象结果数组

我有一个具有父子值的对象数组

    submenu : [{
    text: 'Website',
    permissionId : 900,
    submenu:[{
            text: 'Publisher Site',
            permissionId : 901
        },

        {
            text: 'Track Disable',
            permissionId : 902
        },

        {
            text: 'Goals',
            permissionId : 904
        }]
}]
       submenu:[ {
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]
和另一个具有子值的对象数组

    submenu : [{
    text: 'Website',
    permissionId : 900,
    submenu:[{
            text: 'Publisher Site',
            permissionId : 901
        },

        {
            text: 'Track Disable',
            permissionId : 902
        },

        {
            text: 'Goals',
            permissionId : 904
        }]
}]
       submenu:[ {
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]
我们需要这样的对象的结果数组

   submenu : [{ 
    text: 'Website',
    permissionId : 900,
    submenu:  [{
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]
     } ]

我已经使用了a和b变量中的两个对象

a = { submenu : [{
    text: 'Website',
    permissionId : 900,
    submenu:[{
            text: 'Publisher Site',
            permissionId : 901
        },

        {
            text: 'Track Disable',
            permissionId : 902
        },

        {
            text: 'Goals',
            permissionId : 904
        }]
}] }

b = {
submenu:[ {
            text: 'Publisher Site',
            permissionId : 901
        },
        {
            text: 'Track Disable',
            permissionId : 902
        }
        ]
}
var c = b.submenu;
   a.submenu[0].submenu = a.submenu[0].submenu.filter((elm)=> c.find(e=>e.permissionId == elm.permissionId));
console.log(a);
输出-

submenu: Array(1)
0:
permissionId: 900
submenu: Array(2)
0: {text: "Publisher Site", permissionId: 901}
1: {text: "Track Disable", permissionId: 902}
length: 2
__proto__: Array(0)
text: "Website"
__proto__: Object
length: 1
__proto__: Array(0)
__proto__: Object

为什么{text:'Website',permissionId:900,}包含在最终对象中?这不是常见的,对吗?不,我们需要的最后一个数组{text:'Website',permissionId:900,}通过组合两个对象来获得预期的结果