贝利信息

JavaScript如何实现数组扁平化_怎样处理多层嵌套的数组

日期:2025-12-27 00:00 / 作者:狼影
JavaScript数组扁平化核心是将多层嵌套数组转为一维,可用flat()(如flat(Infinity))、递归+Array.isArray判断或栈模拟递归实现,flat()自动忽略空槽位但保留undefined/null。

JavaScript实现数组扁平化,核心是把多层嵌套的数组(比如 [1, [2, [3, 4]], 5])变成一层结构([1, 2, 3, 4, 5])。现代写法简洁高效,老环境也可兼容处理。

用 flat() 方法最简单

flat() 是 ES2019 引入的原生方法,直接支持指定展开深度:

例如:
[1, [2, [3, [4]]]].flat(Infinity)[1, 2, 3, 4]

递归 + Array.isArray 判断(兼容旧版)

不依赖新 API 时,手动递归是最清晰的思路:

示例代码:

function flatten(arr) {
return arr.reduce((res, item) => {
return res.concat(Array.isArray(item) ? flatten(item) : item);
}, []);
}

用栈模拟递归(避免调用栈溢出)

对超深嵌套(如 10000 层),递归可能爆栈。改用栈结构更稳妥:

这样不依赖函数调用深度,适合极端场景。

注意空槽位和非数组值

flat() 会自动忽略数组中的空槽位(如 [1, , 3] 的中间空位),但不会过滤 undefinednull。如果需要清理这些值,得额外用 filter(Boolean) 或自定义逻辑。