在计算机编程中,Array(数组)是最基础的数据类型之一,而 JavaScript 中的数组更是十分常用的数据形式。Array.prototype.forEach() 方法是 JavaScript 中用来循环遍历数组元素的函数之一。
ES10 中加强版的 Array.prototype.forEach() 方法不仅可以用来遍历数组元素,还能对数组元素进行增加、删除和修改等操作。这对于前端开发来说,具有较大的作用。
forEach() 方法
让我们先了解一下普通的 Array.prototype.forEach() 方法。
forEach() 方法在遍历顺序上与 for 循环是一致的,它既可以遍历数组中所有的元素,也可以遍历一部分元素,语法如下:
array.forEach(function(currentValue, index, arr), thisValue)
其中,currentValue 为必选参数,用于表示当前遍历到的元素值,index 为可选参数,表示当前元素在数组中的索引值,arr 为可选参数,表示正在遍历的数组本身。
除了 currentValue、index 和 arr 参数外,forEach() 还可以接受一个可选的 this 值。当函数被调用时,this 值指定为由 thisArg(this)传递。如果省略该参数,则函数的 this 值为 global 对象(浏览器中为 window 对象)。
来看一下 forEach() 方法的一些示例代码:
-- -------------------- ---- ------- ----- ------ - --------- --------- ---------- ---------------------- -- - ------------------- --- -- ------- -- ----- -- ------ -- ------
上述代码中,forEach() 方法遍历 fruits 数组中的每一个元素,将每一个元素作为参数传递给 console.log() 函数,达到输出 fruits 数组中所有元素的目的。
const numbers = [1, 2, 3, 4, 5]; let sum = 0; numbers.forEach((number) => { sum += number; }); console.log(sum); // Output: 15
上述代码中,forEach() 方法遍历 numbers 数组中的每一个元素,将每一个元素作为参数传递给箭头函数中的计算逻辑,最后将所有元素累加得到 sum 的结果为 15。
增强版的 forEach() 方法
在 ES10 中,增强版的 forEach() 方法具有以下新特性:
- 在遍历元素时,新增了对数组中新增和删除操作的实时响应,即使更新是在 forEach() 方法调用之前就发生了。
const arr = [1, 2, 3]; arr.forEach((currentValue, index, array) => { console.log(currentValue); // Output: 1 2 4 if (currentValue === 2) { arr.splice(index + 1, 0, 4); } });
上述代码中,当 currentValue 的值为 2 时,在数组中增加了一个元素 4。在此之后,forEach() 方法还能够正确地遍历 4。
- forEach() 方法可以接受 Promise,并在 Promise 执行完成之后继续遍历数组元素。
const arr = [1, 2, 3, 4]; arr.forEach(async (currentValue) => { const doubled = await Promise.resolve(currentValue * 2); console.log(doubled); });
上述代码中,forEach() 方法接受了一个 Promise,经过 Promise 处理后输出了每个元素的值的两倍(1,2,3 和 4)。
- forEach() 方法可以接受 Generator,将其当作一个同步 Iterator 对待。
-- -------------------- ---- ------- --------- ------------- - ----- -- ----- -- ----- -- - ----- --- - --- ----------------- --- -------------------------- -- ---------------------------
上述代码中,使用 Generator 函数创建了一个序列(1,2,3),使用扩展操作符将序列插入数组中,forEach() 方法按顺序对序列中的元素进行遍历,最后输出的值应该为(0,1,2,3,4)。
总的来说,增强版的 forEach() 方法可以为数组操作带来新的思路和方法,节省开发者的时间和精力,提高前端开发的效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cf4069e46428fe9ea4a271