JavaScript数组如何遍历_有哪些迭代方法?

JavaScript数组遍历方式核心区别在于是否改变原数组、支持中断、返回新数组及兼容性;for循环最基础,控制力强,适合需索引、break/continue或兼容IE8的场景。

JavaScript数组遍历有多种方式,核心区别在于:是否改变原数组、是否支持中断、是否返回新数组、是否兼容旧环境。选对方法能少写bug、提升可读性。

for循环:最基础,控制力最强

传统for循环适合需要索引、要中途break/continue、或兼容IE8及更早版本的场景。

  • 直接访问arr[i],性能好,逻辑清晰
  • 可随时用break跳出,continue跳过当前项
  • 注意边界:循环条件建议用i ,避免缓存length导致漏项(尤其在循环中修改数组时)

forEach:语义明确,但不能中断

遍历每个元素并执行回调,代码简洁,但不支持breakreturn false终止循环。

  • 参数依次是itemindexarray
  • 无法跳出循环——想提前结束?改用some()every(),或退回for循环
  • 不返回新数组,也不改变原数组,纯“副作用”操作(如打印、发请求、更新外部变量)

map/filter/find/some/every:函数式,各司其职

这些方法都接收回调函数,不修改原数组,返回值不同,语义更精准。

  • map():返回一个新数组,每个元素是回调处理后的结果
  • filter():返回满足条件的新数组
  • find():返回第一个匹配的元素(或undefined)
  • some():只要有一个为真就返回true
  • every():全部为真才返回true

它们天然支持“短路”逻辑(some/every会自动停止),比forEach更适合判断类需求。

for...of:ES6推荐,简洁现代

直接遍历元素值,语法干净,支持breakcontinueawait,是for循环的语义升级版。

  • 不提供索引,如需索引可用entries()或配合let i = 0手动计数
  • 可遍历所有可迭代对象(Array、Set、Map、字符串等)
  • 不兼容IE,但现代项目基本无压力

基本上就这些。日常开发中,优先考虑语义:要转换用map,要筛选用filter,要找某项用find,要判断用some/every;需要控制流就选for或for...of;老项目兜底用for循环。不复杂但容易忽略细节。