为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仰0923016 2016-10-25 13:55:41
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--?
查看完整描述

3 回答

已采纳
?
这都不会

TA贡献72条经验 获得超92个赞

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

有了i--的话,删完了之后就会往前退一位,当然就不会漏掉元素了。

查看完整回答
3 反对 回复 2016-10-25
?
慕仰0923016

TA贡献2条经验 获得超0个赞

是不是用splice删除之后,后面的项序号都减少1,所以才用i--?望大师们解答一下,感激不禁。

查看完整回答
反对 回复 2016-10-25
  • 3 回答
  • 0 关注
  • 1517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信