Javascript 如何基于另一个复杂对象特性过滤复杂对象
所以有一个复杂的对象AJavascript 如何基于另一个复杂对象特性过滤复杂对象,javascript,Javascript,所以有一个复杂的对象A { "AId": 34, "children": [ { "id": 1, "name": "name1", "prop": "Hello" }, { "id": 2, "name": "name2", "prop": "world" } ] } 还有一个复杂的物体B [ { "id": 1, "
{
"AId": 34,
"children": [
{
"id": 1,
"name": "name1",
"prop": "Hello"
},
{
"id": 2,
"name": "name2",
"prop": "world"
}
]
}
还有一个复杂的物体B
[
{
"id": 1,
"name": "name1"
},
{
"id": 2,
"name": "name2"
}
]
我想删除对象B中的所有元素,这些元素在对象A子对象中只是基于id。因此,在示例中,对象子对象的id为1和2,这些id也在对象B中,因此这些id为1和2的元素需要在对象B中删除,这样做的最佳方法是什么?希望我能很好地解释这一点试试foreach
oB= [
{
"id": 1,
"name": "name1"
},
{
"id": 2,
"name": "name2"
}
]
oA={
"AId": 34,
"children": [
{
"id": 1,
"name": "name1",
"prop": "Hello"
},
{
"id": 2,
"name": "name2",
"prop": "world"
}
]
}
oA.children.forEach(x=>{
oB.forEach(y=>{
if(x.id==y.id) oB.shift()
})
})
console.log(oB)
您可能希望在对象B()上使用[Array].filter,传递一个再次使用[Array].filter的函数-以缩小ID范围。
A.children.forEach(x=>{
this.B.forEach(y=>{
if(x.id==y.id)
{
this.A.children = this.A.children.filter(s => s.id !== x.id);
}
})
});