map是JavaScript数组方法,对每个元素执行操作并返回新数组,原数组不变;回调函数需返回值,否则新数组对应位置为undefined;常用于数字计算、对象字段提取或结构转换。

map 是 JavaScript 数组的内置方法,用于对数组中每个元素执行相同操作,并返回一个**新数组**,原数组保持不变。
基本用法:传入一个回调函数
回调函数接收三个参数:当前元素、索引、原数组(通常只用第一个)。返回值会成为新数组对应位置的元素。
- 语法:
arr.map(callback) - 必须有返回值,否则新数组对应位置是
undefined - 不修改原数组,始终返回新数组
常见转换场景
数字数组计算:比如把每个数翻倍
const nums = [1, 2, 3];const doubled = nums.map(n => n * 2); // [2, 4, 6]
对象数组提取字段:比如从用户列表中取出所有用户名
立即学习“Java免费学习笔记(深入)”;
const users = [{name: 'Alice'}, {name: 'Bob'}];const names = users.map(u => u.name); // ['Alice', 'Bob']
生成带结构的新对象:比如添加计算字段或重命名属性
const products = [{id: 1, price: 10}, {id: 2, price: 20}];const withTax = products.map(p => ({...p, totalPrice: p.price * 1.1}));
注意点和易错细节
- 如果回调里没写
return(或箭头函数没用括号包裹),默认返回undefined - 不能跳过某个元素 —— 新数组长度一定和原数组相同
- 想过滤+转换,应先
filter再map,或用flatMap配合条件返回空数组 - 不支持异步操作直接返回 Promise 数组;如需处理异步,要用
Promise.all()包裹 map 结果
和 forEach、filter 的区别
forEach:只遍历,不返回值(返回 undefined);filter:返回满足条件的元素子集;map:一对一映射,长度不变,强调“转换”。


















