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,}通过组合两个对象来获得预期的结果