在阵列

时间:2018-01-03 02:14:54

标签: javascript

我正在尝试将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);
      } 
    })
})

1 个答案:

答案 0 :(得分:1)

一种方法是filter()输出你不需要的物品。

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

newProp = newProp
  .filter(newPropElement =>
     prop.every(propElement => newPropElement.id !== propElement.id)
  )