【问题标题】:incremental/ decremental for-loops for removing elements from an array using splice用于使用拼接从数组中删除元素的增量/减量 for 循环
【发布时间】:2018-12-29 20:42:25
【问题描述】:

我正在尝试从数组中删除虚假元素。当我像这里显示的那样运行增量 for 循环时,它只删除索引 2 处的一个虚假值,而不是索引 3 处的一个,但是当我运行一个递减 for 循环时,如下所示,它同时删除了两个(所有) 数组中的虚假值。为什么?在我看来,无论哪种方式,我都应该遍历数组。我错过了什么?

function bouncer(arr) {
    for(var i=0;i<arr.length;i++){
        if(Boolean(arr[i]) === false){
           arr.splice(i,1);
        }
  }
console.log(arr);
}

bouncer([7, "ate", "", false, 9]);

function bouncer(arr) {
    for(var i=arr.length-1;i>=0;i--){
        if(Boolean(arr[i]) === false){
           arr.splice(i,1);
        }
  }
console.log(arr);
}

bouncer([7, "ate", "", false, 9]);

【问题讨论】:

    标签: for-loop splice


    【解决方案1】:

    自从您使用 Splice 删除元素后,您将跳到前面的元素。 每次删除元素时,尝试将变量减 1。

     function bouncer(arr) {
        for(var i=0;i<arr.length;i++){
            if(Boolean(arr[i]) === false){
               arr.splice(i,1);
               i--;
            }
      }
    console.log(arr);
    }
    
    bouncer([7, "ate", "", false, 9]);
    

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2019-07-03
      相关资源
      最近更新 更多