JS数组遍历:for、for-in、for-of、map与forEach对比及选型指南

作者:函数茶馆

时间:2026-10-24

浏览:556

本文深入解析JavaScript中五种主要数组遍历方式:for、for-in、for-of、map和forEach。通过对比它们在流程控制、性能表现、返回值处理及原型链遍历等方面的差异,帮助开发者根据具体需求(如是否需要索引、是否需返回值或异步处理)选择最优方案,提升代码效率与可维护性。

文章目录

在JavaScript开发中,数组遍历是常见操作,通常涉及普通函数的使用。

其核心优势在于支持流程控制语句,包括break、continue以及return。

传统for循环

const arr = ["A", "B", "C"]
 for(let i = 0; i<arr.length; i++){
   console.log(arr[i])
 }

该方式的优势在于能够精确控制索引变量;主要劣势则是语法结构相对繁琐。

for-in循环

const arr = ["A","B","C"]
arr["3"] = 1
Array.prototype["cc"] = "ck"

for(let e in arr){
  console.log(arr[e])
}

该方式存在以下主要缺陷: 1. 遍历得到的索引e实际上是字符串类型,即e的数据类型为字符串。 2. 它会遍历可枚举的非数字类型键,以及定义在原型链上的属性。 3. 不同浏览器对for-in遍历顺序的实现可能存在不一致性。

for-of循环

const arr = ["A","B","C"]
arr["3"] = 1
Array.prototype["cc"] = "ck"
for(let i of arr){
  console.log(i)
}

其优势在于语法简洁且保证有序遍历;劣势在于由于直接遍历的是值,因此无法直接控制索引。

函数式编程中的高阶函数应用

这两类函数的主要缺陷在于无法进行流程控制。

map方法

const arr = ["A","B","C"]
arr.map(e => console.log(e))

其优势在于语法简洁,并返回一个由旧数组映射生成的新数组,且不会修改原数组。

forEach方法

const arr = ["A","B","C"]
arr.forEach(e => console.log(e))

其优势在于语法简洁,在不需要返回数组的场景下,其性能表现优于map。

名称流程控制函数式
forT 
for ofT 
forEach T
map T

JS数组遍历方法综合总结

当不需要流程控制时,优先选用map;若不需要返回值,则使用forEach;若需精确控制索引,可回退至for循环;for-of通常结合内置默认迭代器的数据结构(如Map、Set)使用;在需要结合生成器、async/await进行异步迭代时,也是合适的选择。

如需了解更多关于JS数组遍历方法的技巧,请参阅下方的相关链接。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章