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 迭代来做到这一点。我正在寻找一种实用的方法,而引用的答案不包含该方法。不是骗子。
只需重新分配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)