一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

JavaScript 数组常用迭代方法怎么使用

时间:2026-07-15 20:41:46 编辑:袖梨 来源:一聚教程网

JavaScript数组迭代方法各司其职:forEach执行副作用无返回;map生成新数组逐项转换;filter筛选子集;some/every做布尔判断并短路;reduce聚合为单值。

JavaScript 数组的迭代方法用起来不难,关键在选对方法——不同方法解决不同问题,用错反而绕弯子。

forEach:只遍历,不产出新数组

适合执行副作用操作,比如打印、发请求、修改外部变量。它没有返回值(返回 undefined),也不会中断循环(不能用 breakreturn 跳出)。

  • 回调函数接收三个参数:当前元素索引原数组(后两个可省略)
  • 跳过空位(如 [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

热门栏目