flatmap 是 javascript 数组方法,先映射后浅层扁平化一层;可替代 map+flat(1),适用于拆分字符串、提取嵌套字段、条件映射等场景,仅单层扁平化且不修改原数组。

flatMap 是 JavaScript 中一个非常实用的数组方法,它把 map 和 flat(1) 合并成一步:先对每个元素执行映射函数(返回一个数组或任意值),再将所有结果浅层扁平化一层。
基本用法:替代 map + flat(1)
传统写法需要两步:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
const result = arr.map(x => [x, x * 2]).flat(1); // [1, 2, 2, 4, 3, 6]
用 flatMap 更简洁:
常见适用场景
- 拆分字符串并过滤空项:比如把多行文本转为单词数组
const words = lines.flatMap(line => line.split(" ").filter(w => w));
// ["hello", "world", "js", "flatMap"]
- 展开嵌套结构并提取字段:如从用户列表中提取所有标签
{ name: "Alice", tags: ["js", "react"] },
{ name: "Bob", tags: ["node"] }
];
const allTags = users.flatMap(u => u.tags); // ["js", "react", "node"]
- 条件映射(返回空数组跳过该项):类似 filter + map 的组合
const doubledOdds = nums.flatMap(n => n % 2 ? [n * 2] : []);
// [2, 6] —— 只对奇数映射并保留结果,偶数被“跳过”
注意点和限制
- 只做**单层扁平化**(等价于
flat(1)),不会递归处理深层嵌套 - 映射函数返回非数组值(如数字、字符串、对象)会被自动包装成数组再扁平,所以不影响结果
- 不修改原数组,返回新数组
- 不支持旧版 IE,现代浏览器和 Node.js 11+ 均可用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










