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

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

selectTag(row, id) {
    if (row.tagId.indexOf(id) > -1) {
         row.tagId = row.tagId.filter(n => n !== id)
    } else {
        row.tagId.push(id)
    }
}
阅读 10.2k
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)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏