使用splice从数组中删除项目

时间:2017-05-09 15:11:23

标签: javascript vue.js vuejs2

我正在使用Vue JS,我有2个不同的数组categoriesitems。每个项目可以属于多个类别,项目是动态生成的,因此最初不在类别数组中关联。然后我解析类别数组以创建包含不同项的表。

出于测试目的,我将项目附加到已安装的vue属性中的相关类别,如下所示:

mounted: function() {
  for (let item of this.items) {
    for (let category of item.categories) {
      this.categories[category - 1].items.push(item)
    }
  }
}

然后当按下删除按钮时,我触发deleteItem方法,该方法使用splice从categories数组和items数组中删除项目,但我是在那里有一点问题,没有删除正确的项目。

  methods: {
    deleteItem: function(item) {
      for (let category of item.categories) {
        this.categories[category - 1].items.splice(this.categories[category - 1].items.indexOf(item, 1))
      }
      this.items.splice(this.items.indexOf(item, 1))
    }
  }

请参阅示例Fiddle。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

更改

this.items.splice(this.items.indexOf(item, 1))

this.items.splice(this.items.indexOf(item), 1)

以便将1作为第二个参数传递给splice

请注意,您执行两次相同的错误。