使用splice()从数组中删除与条件匹配的项目

时间:2019-04-16 06:23:49

标签: json vue.js

我正在尝试通过for循环删除与状态数组中的条件匹配的所有项目。但这似乎只是删除数组中的最后一项,而不删除匹配项。我是否错误地使用了.splice()?提前致谢。代码是:

rmTravel() {
           for(var i = 0; i < this.cards.length; i++){
               if(this.cards[i].sg_categories.includes("travel")){
                   this.cards.splice(i, 1);
                   console.log('Removed following card:', this.cards[i].slug)
               }
           }
           console.log('Cards in cards state: ', this.cards)
       }

1 个答案:

答案 0 :(得分:2)

这是一个经典问题;您将同时向前迭代并缩小数组,因此最终将跳过记录。

我建议改用Array.prototype.filter()

this.cards = this.cards.filter(({ sg_categories }) => 
    !sg_categories.includes('travel'))

这会将数组简化为sg_categories属性不包含“旅行” 的条目。