[Medium] LeetCode JS 30 - 2625. Flatten Deeply Nested Array (阵列扁平化)
2024年3月7日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
LeetCode 30 Days of JavaScript
本题来自 LeetCode 的 30 天 JacaScript 挑战
2625. Flatten Deeply Nested Array (阵列扁平化)题目描述
给定一个多维阵列 arr
和一个深度值 n
,返回这个阵列的扁平化版本。多维阵列是一种可以包含整数或者其他多维阵列的递归式数据结构。
扁平化阵列指的是将原来阵列中的部分或全部子阵列移除,并用子阵列中的实际元素替代的结果。这种扁平化操作只会在当前嵌套深度小于 n
时执行。第一层阵列中元素的深度被视为 0。
// 范例
输入:
arr = [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
n = 0
输出:
[1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
解释:
当传入的深度值 n=0 时,会总是得到原始的阵列作为输出结果。这是因为子阵列(0)的最小可能深度不小于 n=0。因此,不会有任何子阵列被扁平化。
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习
解法
var flat = function (arr, n) {
const result = [];
for (let item of arr) {
if (Array.isArray(item) && n > 0) {
result.push(...flat(item, n - 1));
} else {
result.push(item);
}
}
return result;
};