flat实现js


flat 方法的基本概念
flat() 是 JavaScript 数组的一个方法,用于将嵌套数组“拉平”(扁平化),返回一个新数组。默认情况下,它只会拉平一层嵌套,但可以通过参数指定拉平的深度。
语法
arr.flat([depth])
depth(可选):指定拉平的深度,默认为1。若需完全拉平,可传递Infinity。
使用示例
默认拉平一层
const arr = [1, 2, [3, 4]];
console.log(arr.flat()); // [1, 2, 3, 4]
指定拉平深度
const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat(2)); // [1, 2, 3, 4, 5, 6]
完全拉平所有嵌套
const arr3 = [1, [2, [3, [4]]]];
console.log(arr3.flat(Infinity)); // [1, 2, 3, 4]
注意事项
- 原数组不会被修改,
flat()返回一个新数组。 - 空项(稀疏数组的空位)会被移除:
const arr4 = [1, , 3, [4, , 6]]; console.log(arr4.flat()); // [1, 3, 4, 6]
兼容性与替代方案
flat()是 ES2019 引入的方法,旧版浏览器需通过 Babel 等工具转译。- 替代实现(递归拉平):
function flatten(arr, depth = 1) { return depth > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val, depth - 1) : val), []) : arr.slice(); }
应用场景
- 处理嵌套的 API 响应数据。
- 合并多层数组结构为一维数组。
- 清理数据中的空项或稀疏项。






