javascript展平多维数组最直接方式是flat()方法:默认展一层,传infinity展平所有层级;兼容旧环境可用递归+reduce+concat;二维数组可用[].concat(...arr);flat()自动忽略空槽位。

JavaScript 中把多维数组展平成一维数组,最直接的方式是用 Array.prototype.flat() 方法,它专为此设计,简洁高效。
用 flat() 一键展平
flat() 默认只展开一层嵌套。如果不确定嵌套深度,可传入 Infinity 展平所有层级。
-
[1, [2, 3], [4, [5, 6]]].flat()→[1, 2, 3, 4, [5, 6]](只展一层) -
[1, [2, 3], [4, [5, 6]]].flat(Infinity)→[1, 2, 3, 4, 5, 6] - 支持负数参数,如
.flat(-1)表示从最内层开始展一层(实际很少用)
兼容老环境:递归 + reduce + concat
若需支持 IE 或旧版 Node.js,可用递归方式手动展平:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 对每个元素判断是否为数组:是则递归展平,否则保留原值
- 常用写法:
arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []) - 注意:concat 不会修改原数组,适合函数式风格
用扩展运算符 + Array.isArray 判断(适合已知固定层数)
比如二维转一维,可结合扩展运算符和 filter:
-
[...arr].flat()等价于arr.flat(),但更啰嗦,不推荐 - 二维数组常用简写:
[].concat(...arr),例如[].concat(...[[1,2], [3,4]])→[1,2,3,4] - 该写法不适用于三层及以上,遇到非数组项会报错,需提前过滤
处理含空值或稀疏数组的情况
flat() 会自动忽略空槽位(sparse array),而 reduce + concat 方式默认保留 undefined(除非显式过滤):
-
[1, , 3].flat()→[1, 3](跳过空位) - 若需保留空位逻辑,得自己控制:比如用 map + flatMap 或显式检查
val !== undefined - flatMap 可作为补充:它先 map 再 flat(1),适合“映射后展平一层”的场景
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










