删除数组中所有的假值项!

function bouncer(arr) {
  for(i=0;i<arr.length;i++){
    if(!arr[i]){
      arr.splice(i,1);
    }
  }
  return arr;
}

bouncer([false,null,34,0,NaN,undefined,false]);

程序运行结果怎么是[null,34,null,false],不是[34]。

我通过看别人的程序,在arr.splice(i,1);下一行加了一个i--就可以了。。为啥要加i--?

慕仰0923016
浏览 1518回答 3
3回答

这都不会

因为假如说删除了数组中的第一个值false,null就变成第一个了,但是你这个代码再继续往下走是判断第二个,第二个就是34了(删除false之前的第三个)。所以会漏掉一些元素根本就没有判断。有了i--的话,删完了之后就会往前退一位,当然就不会漏掉元素了。

慕仰0923016

是不是用splice删除之后,后面的项序号都减少1,所以才用i--?望大师们解答一下,感激不禁。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript