在数组之间省略匹配的对象

问题描述 投票:0回答:1

我正在尝试将propProp(对象数组)与prop(另一个对象数组)进行比较,当匹配时,它将从newProp数组中删除。

prop = [{ id: 1, name: 'John Doe}, {id: 2, name: 'Jane Doe'}, {id: 3. name: 'Baby Doe'}]

newProp = [{id: 4, name: 'Johnny Doe' }, {id: 1, name: 'John Doe'} ....]

这是我尝试过的,想知道是否有更好/更清洁的方法来解决这个问题。

  let prop = [{ id: 1, name: 'John Doe'}, {id: 2, name: 'Jane Doe'}, {id: 3, name: 'Baby Doe'}]

  let newProp = [{id: 4, name: 'Johnny Doe' }, {id: 1, name: 'John Doe'}]

prop.map( (i,Iindex) => {
    newProp.map((o, oIndex ) => {
      if (i.id == o.id) {
        prop.splice(Iindex, 1);
        console.log(prop);
      } 
    })
})
javascript
1个回答
1
投票

一种方法是filter()你不需要的项目。

它更干净,更具可读性(你会在遵循函数式编程的人的代码中看到它),但是它产生了一个新的数组,因此如果在非常大的输入数组上频繁调用,则会对性能产生负面影响。

newProp = newProp
  .filter(newPropElement =>
     prop.every(propElement => newPropElement.id !== propElement.id)
  )
© www.soinside.com 2019 - 2024. All rights reserved.