首页 > 解决方案 > 从数组中删除特定项

问题描述

我有一个只应该包含 10 位数字的数组。我试图消除数组中包含“-”符号的条目,但由于某种原因它不起作用。

for(var z = 0; z<numArray.length; z++){
    if(numArray[z].includes("-")){
        numArray.splice(z, 0)
    }
}

我有什么明显的遗漏吗?

标签: javascriptarrays

解决方案


从数组中删除元素时,您需要向后迭代数组或递减index变量,这是一个经典的做法,否则您可能会跳过应该删除的彼此相邻的元素。

此外,具有0第二个参数意味着“替换 0”,或者在这种情况下,“删除 0”,因此将其更改为1将删除元素

for(var z = 0; z<numArray.length; z++){
    if(numArray[z].includes("-")){
        numArray.splice(z, 1)
        z--;
    }
}
for(var z = numArray.length-1; z >= 0; z--){
    if(numArray[z].includes("-")){
        numArray.splice(z, 1);
    }
}

但是,使用它更容易Array.prototype.filter。此函数返回一个新数组,其中仅包含基于传入函数评估为 true 的元素,因此我们只想保留不包含的元素"-"

numArray = numArray.filter((num) => !num.includes("-"));

推荐阅读