map是数组高阶方法,用于对每个元素执行操作并返回新数组;接收回调函数,参数为当前元素、索引、原数组,必须return,新数组长度与原数组一致,不修改原数组。

map 是数组的高阶方法,用于对每个元素执行相同操作,返回一个**新数组**,原数组不变。
核心用法:传入一个函数,自动遍历并映射
map 接收一个回调函数,该函数会为数组中每个元素调用一次,参数依次是:当前元素、索引、原数组。回调函数的返回值会成为新数组对应位置的元素。
- 必须有 return,否则新数组对应位置是 undefined
- 不修改原数组,始终返回新数组
- 新数组长度与原数组严格一致(哪怕 return null 或 undefined)
常见写法:箭头函数 + 单表达式最简洁
多数场景下,用箭头函数配合隐式返回即可:
const doubled = nums.map(x => x * 2); // [2, 4, 6]
需要访问索引或原数组时,可展开参数:
const items = ['a', 'b', 'c'];const withIndex = items.map((item, i) => `${i}:${item}`); // ['0:a', '1:b', '2:c']
注意边界:空数组、稀疏数组、非数组对象
空数组调用 map 返回空数组;稀疏数组(如 [1, , 3])中空位会被跳过,回调不执行,新数组对应位置仍是空位;map 只适用于真正数组,类数组需先转成数组(如 Array.from 或 [...arr])。
- 不能直接在 NodeList 或 arguments 上用,会报错或行为异常
- 字符串也可被展开使用,但需先转为数组:[...'hello'].map(...)
别和 forEach、filter 混用
map 的目的明确:生成新数组。如果只是想遍历执行副作用(如发请求、改 DOM),用 forEach;如果要筛选,用 filter;如果要累积计算,用 reduce。误用 map 做副作用会导致代码意图不清,还可能浪费内存创建无用数组。
- ❌ 错误:arr.map(item => console.log(item)) —— 返回了无用数组
- ✅ 正确:arr.forEach(item => console.log(item))
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











