flat是JavaScript数组原生方法,用于将嵌套数组拉平为一维数组,返回新数组不修改原数组;默认展开一层,传数字控制深度,Infinity彻底展平,自动跳过顶层空槽,常与filter、map等组合使用。

flat 是 JavaScript 数组的原生方法,专门用于将嵌套数组“拉平”成一维数组。它不会修改原数组,而是返回一个新数组。
基本用法:默认只扁平化一层
调用 arr.flat() 时,若不传参数,默认展开深度为 1:
-
[1, [2, 3], [4, [5, 6]]].flat()→[1, 2, 3, 4, [5, 6]] - 第二层的
[5, 6]没被展开,因为默认只处理第一层嵌套
指定展开深度:传入数字参数
你可以传入一个数字,表示最多展开几层:
-
[1, [2, [3, [4]]]].flat(2)→[1, 2, 3, [4]](展开两层) -
[1, [2, [3, [4]]]].flat(Infinity)→[1, 2, 3, 4](完全扁平化,不限层数)
自动过滤空槽位(稀疏数组)
flat 会自动移除数组中的空槽(empty slots),比如:[1, , 2, [3, , 4]].flat() → [1, 2, 3, , 4](注意:仅顶层空槽被移除,子数组内的空槽保留)
实际开发中更常见的是配合 filter(Boolean) 清理 undefined、null 等假值。
与其它方法组合使用
单独用 flat 有时不够,常搭配其他方法增强能力:
- 去重并扁平:
[ [1, 2], [2, 3] ].flat().filter((v, i, a) => a.indexOf(v) === i) - 扁平 + 类型转换:
[['1', '2'], ['3']].flat().map(Number)→[1, 2, 3] - 替代递归:想彻底扁平又不想写递归函数?
flat(Infinity)就是简洁解法
不复杂但容易忽略:flat 不会处理对象或字符串里的“伪嵌套”,只对数组元素生效;如果数据结构混杂(如含对象、null),需先做类型判断或预处理。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











