flat实现js
flat方法的基本概念
在JavaScript中,flat()是数组的一个方法,用于将嵌套数组“扁平化”,即减少数组的嵌套层级。该方法返回一个新数组,不会改变原数组。
基本语法
const newArray = arr.flat([depth]);
depth(可选):指定要扁平化的嵌套层级深度,默认为1。
使用示例
扁平化一层嵌套
const arr1 = [1, 2, [3, 4]];
console.log(arr1.flat()); // [1, 2, 3, 4]
扁平化多层嵌套

const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat()); // [1, 2, 3, 4, [5, 6]]
console.log(arr2.flat(2)); // [1, 2, 3, 4, 5, 6]
完全扁平化(使用Infinity)
const arr3 = [1, 2, [3, 4, [5, 6, [7, 8]]]];
console.log(arr3.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8]
替代方案(兼容性处理)
在不支持flat()的环境中,可以通过递归或reduce实现类似功能:

递归实现
function flatten(arr, depth = 1) {
return depth > 0
? arr.reduce((acc, val) =>
acc.concat(Array.isArray(val) ? flatten(val, depth - 1) : val), [])
: arr.slice();
}
使用reduce实现
const flatten = (arr) => arr.reduce(
(acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []
);
注意事项
flat()会跳过数组中的空位(如[1, , 3]扁平化为[1, 3])。- 对于不支持的环境,需使用polyfill或替代方案。






