JavaScript高阶函数是以函数为参数或返回函数的函数;map对每个元素做一对一转换生成等长新数组,filter按条件筛选生成子集数组,二者可链式组合实现清晰的数据处理逻辑。
JavaScript高阶函数是指**以函数为参数,或返回函数的函数**。数组上的 map 和 filter 就是最典型、最常用的两个——它们不修改原数组,而是基于规则生成新数组,让数据处理更清晰、安全、可读。
map 遍历原数组每一项,把回调函数的返回值收集起来,组成一个等长的新数组。
示例:
把数字数组全部翻倍
const nums = [2, 4, 6];
const doubled = nums.map(n => n * 2); // [4, 8, 12]
从用户对象中只取姓名
const users = [{name: 'Tom', age: 28}, {name: 'Lily', age: 22}];
const names = users.map(u => u.name); // ['Tom', 'Lily']filter 遍历原数组,对每一项执行回调函数;只有返回 true 的元素才会进入新数组。
true 留下,false 跳过)示例:
挑出所有偶数
const nums= [1, 2, 3, 4, 5, 6];
const evens = nums.filter(n => n % 2 === 0); // [2, 4, 6]
只保留年龄大于 25 的用户
const adults = users.filter(u => u.age > 25); // [{name: 'Tom', age: 28}]先 filter 再 map 是常见模式,逻辑清晰、无需中间变量。
示例:获取所有成年用户的姓名大写
const result = users
.filter(u => u.age > 25)
.map(u => u.name.toUpperCase()); // ['TOM']
这种写法表达意图直接,也便于后续扩展(比如再加 sort 或 reduce)。