如何优雅实现判断数组存在某个元素就移除该元素不存在就添加该元素?

有个需求要实现当数组存在某一个元素时移除数组中该元素,当数组不存在该元素时向该数组添加该元素。
我是这样实现的,请问是否有更加优美或者方便的写法?请不吝赐教!

selectTag(row, id) {
    if (row.tagId.indexOf(id) > -1) {
         row.tagId = row.tagId.filter(n => n !== id)
    } else {
        row.tagId.push(id)
    }
}
阅读 10.5k
2 个回答

有没有更好的方法先不说,你的数组删除元素的方式有待商榷,既然已经调用了indexof方法,就应该用splice方法删除元素,你这样相当于又遍历了一遍数组。

let pos = arr.indexOf(x);
if (pos < 0){
  arr.push(x)
} else {
  arr.splice(pos, 1)
} 
selectTag(row, id) {
    row.tagId.includes(id) ? row.tagId = row.tagId.filter(n => n !== id) : row.tagId.push(id)
}
推荐问题