Bootstrap

JavaScript: 遍历Array的同时删除指定项

一个简单的需求是,在遍历一个数组时,移除指定的项。
下列代码是不能正常工作的:

var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = 0; i < elements.length; i++){
    if(elements[i] == 5){
        elements.splice(i, 1);
    }
}

不能正常执行的问题是,element.length是在for循环开始时就确定的snapshot,不会随着splice操作而改变。

正确的写法是:

var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = elements.length -1; i >= 0 ; i--){
    if(elements[i] == 5){
        elements.splice(i, 1);
    }
}

是为之记。
Alva Chien
2016.8.22

;