JS系列之——数组扁平化

301 阅读1分钟

数组扁平化实现方法总结

作者:Paula Hu

博客:掘金主页、知乎主页、GitHub主页

点赞是对原创者最大的肯定,我希望在这里看到你努力的身影~~~😘😘😘

思路一

  • 思路:利用reduce递归,判断是否为数组,直到每一项都不是数组
  • 代码:
function flatten(arr) {
    return arr.reduce(result,item)=>{
        return result.concat(Array.isArray(item) ? flatten(item) : item)
    } ,[])
}

思路二

  • 思路:将其转化为字符串(这样就达到了扁平化的目的),再转化为数组,然后再将每一项转化为数字
  • 代码:
function flatten(arr) {
   return arr.toString().split(',').map(item=>Number(item))
}

思路三

  • 思路:使用ES6语法 flat()将数组拉平
  • 代码:
function flatten(arr) {
   return arr.flat(Infinity)
}

flat默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,不确定层数可以写Infinity

思路四

  • 思路:利用拓展运算符,如果存在数组就继续连接
  • 代码:
function flatten(arr) {
   while(arr.some(item => Array.isArray(item))){
       arr = [].concat(...arr)
   }
   return arr
}