如果要从第一个数组中删除第二个数组中不存在的对象

时间:2018-10-23 03:48:45

标签: javascript for-loop foreach find

如果要从第一个数组“ arrayOne”中删除多个对象,而第二个数组“ arrayTwo”中不存在该对象。这只是我的建议。如果您还有其他方法,请告诉我。

let arrayOne = [{
          id: 1
        }, {
          id: 2
        }, {
          id: 3
        }]
        let arrayTwo = [{
          id: 2
        },{
          id: 3
        }]

for (var index = arrayOne.length; index--;) {
if (!arrayTwo.find(y => y.id === arrayOne[index].id)) {
  arrayOne.splice(arrayOne.findIndex(z => z.id === arrayOne[index].id), 1)
  console.log("After splice", arrayOne)
}

2 个答案:

答案 0 :(得分:0)

您还可以使用Set存储arrayTwo元素的ID,然后使用filter仅提取{{1}中也存在的arrayOne元素}}:

arrayTwo

答案 1 :(得分:0)

Array.some()内使用Array.filter()

let arrayOne = [{ id: 1 }, { id: 2 }, { id: 3 }] ;
let arrayTwo = [{ id: 2 }];

const result = arrayOne.filter(obj1 => !arrayTwo.some(obj2 => obj1.id === obj2.id));

console.log('final array : ', result);