Skip to content

6. 数组扁平化

递归遍历

js
function flatArr(arr) {
  if(!(typeof arr == 'object' && arr instanceof Array)) {
    throw new Error('arguments is not a array!please retry!')
  }
  let result = []
  for(let i = 0 ; i< arr.length; i++) {
    const item = arr[i]
    if(Array.isArray(item)) {
      result = result.concat(flatArr(arr[i]))  
    } else {
      result.push(item)
    }
  }
  return result
}

Array.prototype.reduce

js
  function flatArr(arr) {
    return arr.reduce(function(prev, curr) {
      if(Array.isArray(curr)) {
        return prev.concat(flatArr(curr))
      } else {
        return prev.concat(curr)
      }
    },[]
  }

Array.prototype.flat

直接使用ES6的flat方法

js
  Array.prototype.flat(arr)

强制类型转换

利用toString方法,将数组转换为字符串

js
  let arr = [1, 2, 3, 4, [5,6,[7,8,[9]]],10]
  arr.toString().split(',') // 1,2,3,4,5,6,7,8,9,10

KESHAOYE-知识星球