flat是javascript数组原生方法,用于将嵌套数组拉平为一维数组,默认展开一层,支持指定深度(如flat(2)、flat(infinity)),自动过滤空槽位但保留显式undefined,不修改原数组,常与map等方法链式使用。

flat 是 JavaScript 数组原生方法,专门用于将嵌套的多维数组“拉平”成一维数组,支持指定扁平化深度,还能自动过滤掉空值(如 undefined、null 等)。
flat() 基本用法:默认只展开一层
调用 flat() 不传参数时,等价于 flat(1),即只展开最外层的嵌套:
-
[1, [2, 3], [4, [5]]].flat()→[1, 2, 3, 4, [5]](第三层[5]没被展开) - 它不会修改原数组,而是返回一个新数组
指定深度:用数字控制展开几层
传入一个非负整数作为参数,表示最多展开的嵌套层数:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
flat(2):展开两层,适合处理类似[1, [2, [3]]]的结构 -
flat(Infinity):彻底扁平化,无论嵌套多少层都变成一维,例如[1, [2, [3, [4]]]].flat(Infinity)→[1, 2, 3, 4]
flat 会自动跳过空槽位(sparse array)
如果原数组有空位(比如 [1, , 3]),flat() 返回的新数组中这些位置会被移除(不是变成 undefined,而是直接消失):
-
[1, , 3, [4, 5]].flat()→[1, 3, 4, 5] - 注意:这和
undefined元素不同——显式写入的undefined会被保留
结合其他数组方法一起用更灵活
flat() 经常配合 map() 使用,比如把对象数组中的某个字段(本身是数组)统一展开:
-
arr.map(item => item.tags).flat():提取所有tags并合并成一个标签列表 - 也可以链式调用:
arr.map(...).filter(...).flat(),先转换再筛选再扁平
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










