Flatten Array/Object

for of 很好用,記得常用 for(const [key, value] of Object.entries(obj))

Codepen

Flatten one level array

/**
 * @param {number[]} arr
 * @return {number[]}
 */
var flatten = function(arr) {}
Example 1:

Input:  [1, 2, [5, 6]]
Output: [1, 2, 5, 6]

Solution 1

若是純數字就放進新 Array,若不是則在做一次


var flatten = function(arr) {
  let newArr = [];
  convert(arr);
  
  function convert(lists) {
    lists.forEach(list => {
      if( !Array.isArray(list) ){
        newArr.push(list)
      } else{
        convert(list);
      }
    })
   }
   
   return newArr;
}

console.log(flatten([1, 2, [5, 6, [7, 8]]]))

Solution 2

比較簡潔的做法,使用 reduce. previous 被我初始化會是 []

Flatten multiple level array

Flatten object

其實跟 Array 大同小異,只差在 key 的部分

DOM

Last updated

Was this helpful?