数组扁平化

50 阅读1分钟

Array.flat(depth)

js的数组本身具有数组扁平化的方法————Array.flat(),该函数接收一个Number类型的形参,该形参表示数组的深度,即数组的维度,该形参默认为1。既然js有了数组扁平化的方位,为什么还要自己封装一个扁平化数组的函数呢?

我认为主要原因在于对数组深度的获取。有时我们并不能清楚地知道数组的深度,此时如果使用Array.flat()函数来对数组进行扁平化处理的话,会因为数组深度的错误产生错误的结果,因此我希望有一个函数能直接将数组进行扁平化而不需要知道数组的深度。

自然而然就想到了自己动手封装一个函数,根据我的需求,我认为使用递归将可以很简单的实现我所想要的效果。然后我就试着写了写,最后的代码结果如下:

function flat(arr){
  if(!Array.isArray(arr)) return arr
  for( let item of arr){
    if(item instanceof Array){
        flat(item)
    }else{
        result.push(item)
    }
  }
}

这是一个简易的数组扁平化的函数。