forEach是如何执行的
- callback 在forEach执行之前,他的执行范围、内容已经确定。
- callback 执行的值就是索引所对应的值。
- 如果传入的值不存在, 循环便会停止
需要终止循环推荐使用:
简单循环 for…of 循环
callback 执行的值就是索引所对应的值。
将会一直输出 1 ,因为打印1之后一直往数组前追加了4,索引变化后 1数字 一直被追加的数字往后挤 。
const array = [1,2,3]array.forEach(item => {console.log(item) // 将会一直输出 1array.unshift(4) // 数组前面追加值})console.log(array) // [4, 4, 4, 1, 2, 3]
使用return 和 break 为什么不能终止
将forEach转换成普通for循环如下
const array = [1, 2, 3];for (let i = 0; i < array.length; i++) {(function(item) {console.log(item);if (item === 2) return false;})(array[i])}
停止forEach
const array = [1, 2, 3]array.forEach((item, i) => {console.log(item)if (item === 2) { // 当2的时候就会停止array.splice(i, array.length - 1) // 删除后面值不存在就会停止,但是会破坏数组}})console.log(array) // [1]
- 不破坏数组,将删除的数组合并
let array=[1, 2, 3, 4, 5]array.forEach(item=>{console.log(item)if (item == 2) {array = array.splice(0);}})console.log(item);
