const arr=[1,2,3,4,5];
arr.forEach((item,i)=>{
if(item===3){
arr.splice(i,1);
}
console.log(item)
})

在循环里面删除自身的3,循环运行到3这里的时候删掉了3,这个时候数组只剩[1,2,4,5]
但是因为删掉了3,所以4,5往前面挪了位置,4代替了3的位置,第三次的循环已经结束了,所以4不会执行,然后进入第四次循环,然而5顶替了4的位置,所以第四次循环log出的是5.
结论:在forEach里面删除自身,会让循环次数减少一次
网友评论