flat实现js
实现 JavaScript 中的数组扁平化(flat)
数组扁平化是指将多维数组转换为一维数组的过程。以下是几种常见的实现方法:
使用递归方法
递归遍历数组,将嵌套的数组元素逐一展开:

function flattenArray(arr) {
let result = [];
arr.forEach(item => {
if (Array.isArray(item)) {
result = result.concat(flattenArray(item));
} else {
result.push(item);
}
});
return result;
}
使用 Array.prototype.flat
ES2019 引入了原生 flat 方法,可直接使用:
const nestedArray = [1, [2, [3, [4]]]];
const flattened = nestedArray.flat(Infinity); // [1, 2, 3, 4]
参数 Infinity 表示完全扁平化,也可指定层级(如 flat(2))。

使用 reduce 方法
通过 reduce 实现扁平化:
function flattenWithReduce(arr) {
return arr.reduce((acc, item) =>
acc.concat(Array.isArray(item) ? flattenWithReduce(item) : item), []);
}
使用扩展运算符与 some
迭代检查并展开嵌套数组:
function flattenWithSpread(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
注意事项
- 递归方法可能因嵌套过深导致栈溢出,需谨慎处理深层嵌套。
- 原生
flat方法兼容性需考虑(IE 不支持)。 - 性能上,原生方法通常优于手动实现。
示例测试
const arr = [1, [2, [3, [4, 5]]]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5]
根据需求选择合适的方法,原生 flat 为最优解(支持环境下)。






