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

标签 javascript arrays ecmascript-6

<分区>

是否有一种很好的函数式风格方法可以在循环时删除 JS 数组中的元素?

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

var newArr = arr.filter((x) => x.foo > bar)

但是有没有一种方法可以实际删除 arr 中的元素?

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

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

最佳答案

只需重新分配Array

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

如果不能重新赋值,使用循环和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);

关于Javascript:破坏性的 array.filter()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785384/

相关文章:

java - Java 二维对象数组排序

c++ - 输出数组某索引的部分字符串

python - 添加许多具有重叠索引和列的 pandas 数据框

javascript - memoize 函数可以使用 ES6 Map 还是哈希表?

javascript 文本编辑器 - 如何捕获选择

c# - 如何配置 web.config 以允许任意长度的请求

javascript - 数组中的天或月从第 1 天或第 1 个月开始编号

javascript - 了解 ES6 模块的代码执行

javascript - 使用条件分配时的丑陋解构

javascript - 如何使用 vue.js 更改页面上的 html?