天天看點

[Intermediate Algorithm] - Steamroller

題目

對嵌套的數組進行扁平化處理。你必須考慮到不同層級的嵌套。

提示

Array.isArray()

測試用例

  • steamroller([[["a"]], [["b"]]])

    應該傳回 ["a", "b"]。
  • steamroller([1, [2], [3, [[4]]]])

    應該傳回 [1, 2, 3, 4]。
  • steamroller([1, [], [3, [[4]]]])

    應該傳回 [1, 3, 4]。
  • steamroller([1, {}, [3, [[4]]]])

    應該傳回 [1, {}, 3, 4]。

分析思路

分析數組元素要一層層剝離,就是一個遞歸的思想。

代碼

function steamroller(arr) {
  // I'm a steamroller, baby
  var newArr = [];
  
  for (var i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i]))
      //steamroller(arr[i]);
      newArr = newArr.concat(steamroller(arr[i]));
    else
      newArr.push(arr[i]);   
  }
  
  return newArr;
}

steamroller([1, [2], [3, [[4]]]]);
           

轉載于:https://www.cnblogs.com/water-moon/p/6904709.html