Javascript 添加和删除具有相同值的项

Javascript 添加和删除具有相同值的项,javascript,html,vue.js,Javascript,Html,Vue.js,我正在努力做一些理论上很简单的事情,但我找不到为什么我不能让它工作 我需要将元素添加到空数组中,如果值相同,则删除它们。我已经有一个带有复选框的列表,这些复选框用这些值填充数组。正如您所期望的,我希望在取消选中复选框时从数组中删除该值。就是这样:当我选中时,我想添加值,当我取消选中时,我想删除相同的值 我试过使用filter(),find(),甚至splice(),但由于某种原因,我无法使它工作 让我向您展示代码: HTML: {{tag.name} Vue: 方法: methods: {

我正在努力做一些理论上很简单的事情,但我找不到为什么我不能让它工作

我需要将元素添加到空数组中,如果值相同,则删除它们。我已经有一个带有复选框的列表,这些复选框用这些值填充数组。正如您所期望的,我希望在取消选中复选框时从数组中删除该值。就是这样:当我选中时,我想添加值,当我取消选中时,我想删除相同的值

我试过使用
filter()
find()
,甚至
splice()
,但由于某种原因,我无法使它工作

让我向您展示代码:

HTML:


{{tag.name}
Vue:

方法:

methods: {
  selectedTags(tag) {
    this.selectedChecksArray.push(tag)
  },
当然,它只是不断地在
selectedChecksArray
数组上添加
标记,尽管由于
push()
方法,我选中或取消选中了复选框


如有任何建议,将不胜感激。西娅

您应该检查
selectedChecksArray
是否包含所选标记。如果它包含,请将其删除。如果没有,请添加它

selectedTags(标签){
if(此.selectedChecksArray.includes(标记)){
this.selectedChecksArray.splice(this.selectedChecksArray.indexOf(标记),1)
}否则{
此.selectedChecksArray.push(标记)
}
}

你需要检查
selectedChecksArray
的内容,你需要编辑你的
selectedTags
功能,除非你让它这样做,否则它不会按你的要求去做。你会发现在这里运行的可重用代码明显减少了。感谢baymax,它工作起来很有魅力。我缺少
includes()
。我已经把它标为正确的问题了。再次感谢!
methods: {
  selectedTags(tag) {
    this.selectedChecksArray.push(tag)
  },