Javascript 如何基于另一个复杂对象特性过滤复杂对象

Javascript 如何基于另一个复杂对象特性过滤复杂对象,javascript,Javascript,所以有一个复杂的对象A { "AId": 34, "children": [ { "id": 1, "name": "name1", "prop": "Hello" }, { "id": 2, "name": "name2", "prop": "world" } ] } 还有一个复杂的物体B [ { "id": 1, "

所以有一个复杂的对象A

{
  "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);
                             }
                           })
                         });