[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;
};
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們