关于JavaScript数组操作问题,大伙指点迷津一下

有一个对象数组,每个对象都有id属性。现在来一个对象(也有id属性),我拿这个id属性去数组里匹配,如果有就删除数组里这个对象,如果没有就push进去。

img


  const arr = [{ id: 1 }, { id: 2 }]

  function check(obj) {
    const { id } = obj
    const index = arr.findIndex(cur => cur.id === id)
    index > -1 ? arr.splice(index, 1) : arr.push(obj)
  }

  const newObj = { id: 2 }
  const newObj2 = { id: 3 }

  check(newObj)
  check(newObj2)
  console.log(arr)

把这个对象数组的id全部抠出来,然后用这个id数组和这个对象的id属性用incloude判断在不在数组里,在就拿到这个id把原对象数组循环找出相同的id删除,没得,就直接把对象push进对象数组。

这应该没什么捷径
外部定义一个变量为boolean类型
循环对象数组一个个比较,相同则直接删除并且将外部boolean类型值改别
循环结束外部boolean类型值没变则证明数组中没有相等值,push一下