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

时间:2020-06-16 22:16:19

标签: javascript

所以有一个复杂的对象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"

        }
 ]

我想仅基于id删除对象B子对象中对象B中的所有元素。因此,例如,对象A的子对象具有ID 1和2,它们也在对象B中,因此需要在对象B中删除那些ID 1和2,最好的方法是什么?希望我解释得很好

2 个答案:

答案 0 :(得分:0)

尝试使用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)

答案 1 :(得分:0)

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