【注意】:forEach内使用break和return无效!
forEach方法中对数组进行splice()的处理
forEach是一个迭代器,在调用了这个方法之后就无法中断循环。
splice()是移除数组元素的一个方法。
【输入】定义测试数组
var a = [1,2,3,4,5];
测试方法
var func = function(arr){
arr.forEach((iter, index)=>{
console.log("iter:"+iter+"; index:"+index);
arr.splice(0, 1);
});
}
【输出】调用方法查看结果
this.func(a);
// 输出
iter:1; index:0
iter:3; index:1
iter:5; index:2
解析
在forEach()的时候,index值依次加1,循环了3次就结束了,说明循环中的splice()是对数组a起了作用的
(此处专门说明是因为貌似在Java的forEach中对数组长度进行修改会报错)。
第一次循环,index = 0,数组为【1,2,3,4,5】,iter = a[index] = 1;a.splice(0, 1),此时数组为【2,3,4,5】
第二次循环,index = 1,数组为【2,3,4,5】, iter = a[index] = 3; a.splice(0, 1), 此时数组为【3,4,5】
第三次循环,index = 2,数组为【2,4,5】, iter = a[index] = 5; a.splice(0,1), 此时数组为【3,4】
不满足下一次循环条件,结束循环。
网友评论