JavaScript数组迭代方法各司其职:forEach执行副作用无返回;map生成新数组逐项转换;filter筛选子集;some/every做布尔判断并短路;reduce聚合为单值。
JavaScript 数组的迭代方法用起来不难,关键在选对方法——不同方法解决不同问题,用错反而绕弯子。
适合执行副作用操作,比如打印、发请求、修改外部变量。它没有返回值(返回 undefined),也不会中断循环(不能用 break 或 return 跳出)。
[1, , 3] 中间那个空项不会触发回调)[2, 4, 6].forEach(n => console.log(n * 2)) 输出 4、8、12当你需要把原数组“变个样子”得到一个新数组时用它。原数组不变,新数组长度与原数组一致,每个位置对应处理后的结果。
undefined
users.map(u => u.name)
undefined)只留下满足条件的项,组成一个新数组。逻辑清晰,代码简洁,替代手写 for 循环筛选非常自然。
立即学习“Java免费学习笔记(深入)”;
tasks.filter(t => t.done))这两个方法不生成新数组,而是快速回答“有没有”或“是不是全部”这类问题。
true,全都不满足才返回 false
true,任一不满足即返回 false
功能最强大也最灵活,适合求和、拼接字符串、扁平化、分组统计、对象转换等复杂归约操作。
[1,2,3].reduce((sum, n) => sum + n, 0) → 6