js实现flatmap
实现 flatMap 的方法
在 JavaScript 中,flatMap 是一种结合了 map 和 flat 功能的方法,它会先对数组中的每个元素执行映射函数,然后将结果展平一层。以下是几种实现方式:
使用 Array.prototype.flatMap
现代 JavaScript 已经原生支持 flatMap 方法,可以直接使用:

const arr = [1, 2, 3];
const result = arr.flatMap(x => [x, x * 2]);
console.log(result); // [1, 2, 2, 4, 3, 6]
手动实现 flatMap
如果需要在没有原生支持的环境中实现 flatMap,可以通过以下方式:

function flatMap(arr, callback) {
return arr.reduce((acc, current) => {
const mapped = callback(current);
return acc.concat(mapped);
}, []);
}
const arr = [1, 2, 3];
const result = flatMap(arr, x => [x, x * 2]);
console.log(result); // [1, 2, 2, 4, 3, 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]
处理多层嵌套
如果需要展平多层嵌套,可以结合递归或指定展平深度:
function deepFlatMap(arr, callback, depth = 1) {
return arr.map(callback).flat(depth);
}
const arr = [1, [2, [3]]];
const result = deepFlatMap(arr, x => x, 2);
console.log(result); // [1, 2, 3]
以上方法可以根据实际需求选择使用,原生 flatMap 是最简洁高效的方式。






