首页 > 解决方案 > 从 JavaScript 的数组中删除索引未知的项目的更好方法

问题描述

我有一个随机索引为零的数组。给定不同数组的索引是未知的。我使用以下 for 循环来查找和删除零,因此生成的数组与没有零的数组相同。

for (let i=0; i< arr.length; i++){
    if(arr[i] === 0){
      itemIndex = arr.indexOf(arr[i]);
      arr.splice(itemIndex, 1); //removes the zero at the index
      i = 0; //resets the i to zero so that every item in the array is searched even after it is altered.
    }
  }

如您所见,它将“i”重置为零,以便我可以再次遍历数组,因为它将被更改并且零的索引将更改。我想知道是否有更好的方法来做到这一点?我有一种感觉,这可以更好地编码。

标签: javascriptarraysloopsfor-loop

解决方案


您可以在这里选择几个选项...

  1. 保留你的 for 循环:代替i = 0,你可以减少i(即替换i = 0i--
  2. 用过滤器替换循环:arr = arr.filter(element => element !== 0)

两者都将修改数组,就像你想要的那样。arr如果初始化为常量,第二个选项将不起作用。如果是这种情况,您将不得不使用选项 1,或者将过滤器结果分配给一个新数组并在过滤器之后使用它来代替原始数组。

第二个选项更简洁一些,但第一个是对现有代码的小改动,使其按预期工作。


推荐阅读