Array.map() 映射出新数组
最后更新:2026-09-09
Array.map() 映射出新数组
map 对每个元素执行一次回调,用回调的返回值按顺序组成一个**等长**的新数组;原数组不变。把一组数据转换成另一组数据的标配方法。
| 分类 | 数组 |
|---|---|
| ES 版本 | ES5(2009) |
📝 语法
const 新数组 = 数组.map((元素, 下标, 原数组) => 转换结果);
⚙️ 参数
| callback | 转换函数:返回值会成为新数组对应位置的元素。 |
|---|---|
| thisArg | 可选。执行 callback 时的 this 值。 |
返回值:与原数组等长的新数组。
是否修改原值:否(返回新值)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
[ 2, 4, 6, 8 ]
[ '张三', '李四' ]
[ '1. 张三', '2. 李四' ]
⚠️ 警告 map 的回调必须有返回值——箭头函数 `x => { x * 2 }`(带花括号没有 return)会得到全是 undefined 的数组。
💡 提示 map 等长、filter 变短、reduce 变单值——三者是数组数据处理的三板斧。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Array.map() | ✓ v1 | ✓ v12 | ✓ v1.5 | ✓ v3 | ✓ v10.5 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关数组方法
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qmap 和 forEach 有什么区别?
Amap 有返回值(新数组),用于数据转换;forEach 无返回值,纯执行副作用。需要拿到结果一定用 map。
Qmap 可以跳过元素吗?
Amap 总是等长输出,不能跳过——先 filter 再 map,或者回调里返回原元素。
Qmap 会修改原数组吗?
A不会。map 返回新数组。但如果元素是对象且回调里修改了对象属性,原数组的对象也会变(引用共享)。