JavaScript中map、flatMap、find与filter方法详解

作者:代码拾荒

时间:2026-10-31

浏览:70

本文详细解析JavaScript中map、flatMap、find和filter四个核心数组方法。map与flatMap均返回新数组,区别在于flatMap具备单层扁平化能力;find用于获取首个匹配元素,filter则返回所有匹配项。通过代码示例展示各方法在条件过滤、数据转换及数组结构处理中的具体应用与差异。

文章目录

JavaScript中map、flatMap、find和filter方法的使用详解

map和flatMap均用于生成新数组,其中map操作保持原数组长度不变,而flatMap可根据返回结果改变数组长度。

该方法对数组元素进行加工处理以生成新数组,且不会修改原数组长度。若处理过程中不满足特定条件,对应位置将返回undefined。

map与flatMap的基本使用方式类似

其基础处理结果也基本一致

let arr = [1, 2, 3, 4, 5, 6];
let res = arr.map((e) => {
  if (e % 2 == 0) {
    return e;
  }
});
console.log("res===[undefined, 2, undefined, 4, undefined, 6]",res);
let res2 = arr.map((e) => {
  return e * 2
});
console.log("res2===[2, 4, 6, 8, 10, 12]",res2);
//简介方式
let res3 = arr.map((e) =>  e * 2);
console.log("res3===[2, 4, 6, 8, 10, 12]",res3)

flatMap具备将结果数组扁平化一层的特性

当返回结果为数组时,flatMap会去除外层数组结构直接返回内部元素;若返回非数组值,则先将其包装为数组再进行扁平化处理并返回。

let arr = [1, 2, 3, 4, 5, 6];
let res = arr.flatMap((e) => {
  if (e % 2 == 0) {
    return e;
  }
});
console.log("res===[undefined, 2, undefined, 4, undefined, 6]");
let res2 = arr.flatMap((e) => {
  return e * 2
});
console.log("res2===[2, 4, 6, 8, 10, 12]");


let res3 = arr.flatMap((e) =>  {
  return [e,e * 2]
}
);
console.log("res3=== [1, 2, 2, 4, 3, 6, 4, 8, 5, 10, 6, 12]",res3)

find与filter均属于数据过滤操作

两者用于查找符合要求的对象,主要区别在于find仅返回第一个匹配的值,而filter会返回所有符合要求的对象集合。

let res4 = arr.find((e) =>  {
  return e % 2 === 0
})
console.log("res4=== [2]",res4)

let res5 = arr.filter((e) =>  {
  return e % 2 === 0
})
console.log("res5=== [2,4,6]",res5)

总结

以上为个人经验总结,希望能为大家提供参考,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章