js实现flatmap
实现 flatMap 的方法
在 JavaScript 中,flatMap 是一种结合了 map 和 flat 功能的方法,它先对数组的每个元素执行映射函数,然后将结果扁平化一层。以下是几种实现方式:

使用 Array.prototype.flatMap(ES2019 原生支持)
现代浏览器和 Node.js 环境原生支持 flatMap,可以直接调用:

const arr = [1, 2, [3, 4]];
const result = arr.flatMap(x => x);
console.log(result); // [1, 2, 3, 4]
手动实现 flatMap
如果环境不支持原生 flatMap,可以通过以下方式实现:
function flatMap(arr, callback) {
return arr.reduce((acc, curr) => {
const mapped = callback(curr);
return acc.concat(Array.isArray(mapped) ? mapped : [mapped]);
}, []);
}
// 示例用法
const arr = [1, 2, 3];
const result = flatMap(arr, x => [x * 2]);
console.log(result); // [2, 4, 6]
使用 map 和 concat
另一种实现方式是结合 map 和 concat:
function flatMap(arr, callback) {
return [].concat(...arr.map(callback));
}
// 示例用法
const arr = [1, 2, 3];
const result = flatMap(arr, x => [x, x * 2]);
console.log(result); // [1, 2, 2, 4, 3, 6]
注意事项
- 原生
flatMap只能扁平化一层,深层嵌套需要额外处理。 - 手动实现时需确保回调函数的返回值是数组,否则可能导致意外结果。
- 性能敏感场景建议测试不同实现的效率。






