Javascript:破坏性的array.filter()?

mty*_*son 5 javascript arrays ecmascript-6

在循环时删除 JS 数组中的元素有没有好的函数式风格的方法?

我知道过滤器可用于创建一个新数组:

var newArr = arr.filter((x) => x.foo > bar)
Run Code Online (Sandbox Code Playgroud)

但是有没有办法在arr您进行时实际删除元素?

BTW:我不能重新分配,这是Vue组件上的数据对象,所以我需要更新,而不是重新分配。

BTW2:这不是重复的。我知道如何用普通的 JS 迭代来做到这一点。我正在寻找一种实用的方法,而引用的答案不包含该方法。不是骗子。

Koo*_*Inc 5

只需重新分配Array

let arr = [1,2,3,4,5];
arr = arr.filter(v => v < 3);
console.log(arr);
Run Code Online (Sandbox Code Playgroud)

如果无法重新分配,请使用循环和Array.splice。请注意,对于每个删除的项目,索引应减 1。

const arr = [1,2,3,4,5];
for (let i = 0; i < arr.length; i += 1) {
  if (arr[i] < 3) {
    arr.splice(i, 1);
    // you should decrement the index (i) now
    i -= 1;
  }
}

console.log(arr);
Run Code Online (Sandbox Code Playgroud)