javascript扁平化多维数组首选flat()方法,支持depth参数(如flat(infinity)彻底展开);旧环境可用递归+array.isarray或reduce+concat实现,注意空项处理与稀疏数组特性。

JavaScript 中将多维数组扁平化为一维数组,最直接的方法是使用原生的 flat() 方法,它专为此设计,简洁高效。
用 flat() 一键展开(推荐)
flat() 默认只展开一层嵌套,但可通过传入深度参数控制展开层级:
- flat(Infinity) 可彻底扁平化任意深度的嵌套数组
- flat(1) 展开一层,flat(2) 展开两层,以此类推
- 遇到空项(如 undefined、null 或空槽位)会自动跳过
示例:
const arr = [1, [2, [3, [4]]], 5]; console.log(arr.flat(Infinity)); // [1, 2, 3, 4, 5]
兼容旧环境:递归 + Array.isArray 判断
若需支持不支持 flat() 的老旧浏览器(如 IE),可用递归手动处理:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 遍历每一项,如果是数组就递归调用自身,否则直接推入结果数组
- 用 Array.isArray() 准确判断是否为数组,避免误判类数组对象
示例:
function flatten(arr) {
return arr.reduce((acc, item) => {
return acc.concat(Array.isArray(item) ? flatten(item) : item);
}, []);
}
用 reduce + concat 实现(无递归版)
适合中等嵌套、不想写递归时,可借助 while 循环反复检测并展开:
- 只要数组中还存在子数组,就用 concat(...arr) 展开一层
- 注意:concat() 不修改原数组,返回新数组
示例:
function flattenOnce(arr) {
while (arr.some(Array.isArray)) {
arr = [].concat(...arr);
}
return arr;
}
注意点与边界情况
扁平化时需留意以下常见问题:
- 包含空数组 [] 会被展开为“无内容”,不影响结果
- 含稀疏数组(如 [1, , 3])时,flat() 会保留空槽位为 undefined
- 若数组中混有对象、函数等非数组值,flat() 和递归方案均能安全保留它们
- 想过滤掉 null/undefined,需额外调用 filter(Boolean)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










