多年来, forEach
方法因其简洁易读的语法成为了我们处理数组的首选。然而,随着性能要求的提高和更多数组方法的出现,是时候重新评估我们的数组遍历策略了。
forEach 的局限性
forEach 方法虽然直观,但存在几个明显的缺点:
性能较差 :在大数组上,
forEach的执行速度通常比传统的for循环慢无法中断 :一旦开始,必须遍历完整个数组,不支持
break或return提前退出不支持异步 :无法优雅地处理异步操作
返回值问题 :始终返回
undefined,无法链式操作
更高效的替代方案
经典 for 循环

在性能至关重要的场景,传统 for 循环仍然是最快的选择,比 forEach 快约 30%。
for…of 循环

for...of 提供了几乎与 forEach 相同的简洁语法,同时保留了使用 break 、 continue 和 return 的能力。
map、filter 和 reduce

这些函数式方法有明确的用途,代码更具声明性,易于理解和维护。
Array.some 和 Array.every
// 检查是否至少有一个元素满足条件(找到后立即停止遍历)
const hasNegative = array.some(x => x < 0);
// 检查是否所有元素都满足条件(找到不满足的立即停止)
const allPositive = array.every(x => x > 0);
这两个方法会在满足条件时提前终止遍历,比 forEach 更高效。
欢迎补充。