map 返回新数组而不修改原数组,回调函数接收当前元素、索引和原数组三个参数,常用于数据转换;若仅执行副作用应使用 foreach。

map 是 JavaScript 数组上最常用的高阶函数之一,它不会修改原数组,而是返回一个**新数组**,其中每个元素都是对原数组对应元素执行指定函数后的结果。
基本用法:传入一个回调函数
回调函数接收三个参数:当前元素(必填)、索引(可选)、原数组(可选)。最常用的是第一个参数。
- 把数字数组全部翻倍:
[1, 2, 3].map(x => x * 2) → [2, 4, 6] - 提取对象数组中的某个字段:
[{name:'a'}, {name:'b'}].map(item => item.name) → ['a', 'b'] - 给每个字符串加上前缀:
['x', 'y'].map(s => `pre-${s}`) → ['pre-x', 'pre-y']
注意 this 绑定和箭头函数
如果回调函数需要访问外部上下文(比如类实例),用普通函数并显式绑定 this,或直接用箭头函数(它自动继承外层 this):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 箭头函数更简洁:
arr.map((item, i) => this.transform(item, i)) - 普通函数需 bind:
arr.map(function(item) { return this.process(item); }.bind(this))
常见误区:map 不适合“只做操作不返回”
如果你只是想遍历并执行副作用(如发请求、改 DOM),不要用 map。它设计初衷是“转换”,必须有返回值。否则会得到一堆 undefined:
- ❌ 错误写法(返回 undefined,新数组全是 undefined):
[1,2,3].map(x => console.log(x)) - ✅ 正确替代:
[1,2,3].forEach(x => console.log(x))
结合其他 API 做链式处理
map 常和 filter、reduce 等配合使用,实现数据流式处理:
- 先过滤再转换:
users.filter(u => u.active).map(u => u.name) - 转换后求和(需配合 reduce):
numbers.map(x => x ** 2).reduce((a, b) => a + b, 0)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










