for循环数组删除多项元素

2017-04-05  本文已影响162人  藕藕藕汀

for (expr1; expr2; expr3)
{statement}
第一个表示式只在循环开始前执行一次并且无条件执行。
第二个表示式从第一次执行循环开始就在循环开始前运行做一次判断该表达式布尔值,是真就执行循环,是假就中断。如果第一次循环就是假,直接不执行for体。
第三个表达式从第一次执行循环开始就在每次循环结束后执行一次。

删除数组

for(var i = 0; i < array.length; i++) {
    if(array[i].length == 0) {
        array.splice(i, 1);
    }
}

用这个方法,每次删除完数组元素之后,数组的下标都发生了变化,变化之后的数组下标和循环次数i不对应。所以最后得出的结果是错的。
解决方法:
用倒序的方式进行删除元素

for(var i = array.length-1; i >= 0; i--) {
    if(array[i].length == 0) {
        array.splice(i, 1);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读