Rya*_*lin 4 javascript arrays loops for-loop
如果您注意到从索引0开始的for循环的结果,并且向上计数并未将数字的数字取出23.
使用JavaScript循环通过evenArray删除所有不均匀的值
var evenArray = [1,2,3,6,22,98,45,23,22,12];
for (var i = evenArray.length - 1; i >= 0; i--) {
if(evenArray[i] % 2 != 0){
evenArray.splice(i, 1);
}
};
console.log(evenArray);
Run Code Online (Sandbox Code Playgroud)
//输出到此将是2,6,22,98,22,12;
var evenArray = [1,2,3,6,22,98,45,23,22,12];
for (var i = 0; i < evenArray.length; i++) {
if(evenArray[i] % 2 != 0){
evenArray.splice(i, 1);
}
};
console.log(evenArray);
Run Code Online (Sandbox Code Playgroud)
//输出为[2,6,22,98,23,22,12];
当你splice
从数组中取出一个数字时,数组中该点之后的所有值都会向左移动.
在第二种方法中,在索引6处,值为45
.你发现它是奇数,所以你拼接.现在23,22和12被转移,因此23现在在索引6处.但是因为你正在向前迭代,你i++
将你移动到索引7,有效地跳过23,这就是为什么23在结果中.
当你向后迭代时,你可以避免这个问题,因为所有被移动的数字都已经被操作了.
归档时间: |
|
查看次数: |
79 次 |
最近记录: |