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