最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JavaScript 数组常用迭代方法怎么使用
时间:2026-07-15 20:41:46 编辑:袖梨 来源:一聚教程网
JavaScript数组迭代方法各司其职:forEach执行副作用无返回;map生成新数组逐项转换;filter筛选子集;some/every做布尔判断并短路;reduce聚合为单值。
JavaScript 数组的迭代方法用起来不难,关键在选对方法——不同方法解决不同问题,用错反而绕弯子。
forEach:只遍历,不产出新数组
适合执行副作用操作,比如打印、发请求、修改外部变量。它没有返回值(返回 undefined),也不会中断循环(不能用 break 或 return 跳出)。
- 回调函数接收三个参数:当前元素、索引、原数组(后两个可省略)
- 跳过空位(如
[1, , 3]中间那个空项不会触发回调) - 示例:
[2, 4, 6].forEach(n => console.log(n * 2))输出 4、8、12
map:逐项转换,生成新数组
当你需要把原数组“变个样子”得到一个新数组时用它。原数组不变,新数组长度与原数组一致,每个位置对应处理后的结果。
- 必须有返回值,否则新数组对应位置是
undefined - 常用于格式化数据,比如把对象数组提取字段:
users.map(u => u.name) - 注意:不会处理稀疏数组中的空位,但会保留其位置(返回
undefined)
filter:按条件筛选,返回符合条件的子集
只留下满足条件的项,组成一个新数组。逻辑清晰,代码简洁,替代手写 for 循环筛选非常自然。
立即学习“Java免费学习笔记(深入)”;
- 回调函数返回 true 的项会被保留,false 或假值则被丢弃
- 常用于表单校验、列表搜索、状态过滤(如
tasks.filter(t => t.done)) - 返回数组长度可能为 0,原数组不受影响
some 和 every:做布尔判断,一句话代替循环检查
这两个方法不生成新数组,而是快速回答“有没有”或“是不是全部”这类问题。
-
some():只要有一个元素满足条件就返回
true,全都不满足才返回false -
every():所有元素都满足才返回
true,任一不满足即返回false - 适合权限校验、表单完整性检查、数据合规性验证等场景
- 遇到第一个确定结果的项就会停止遍历(短路机制)
reduce:聚合计算,把数组“压成一个值”
功能最强大也最灵活,适合求和、拼接字符串、扁平化、分组统计、对象转换等复杂归约操作。
- 接收两个参数:回调函数 + 可选的初始值(强烈建议显式传入)
- 回调函数参数顺序:累加器、当前项、索引、原数组
- 没给初始值时,第一次调用以第 0 项为累加器、第 1 项为当前值;空数组且无初始值会报错
- 示例:
[1,2,3].reduce((sum, n) => sum + n, 0)→6