数组扁平化

1.ES6 flat

  flat(depth) 参数:depth 

  返回值:返回一个新数组,包含数组与提取嵌套数组的所有元素的新数组

  function flatten(params){

    return params.flat(Infinity)

  }

2.toString

  如果数组的项全为数字,可以使用jion(),tostring()转为字符串

  function flatten(arr){

    return arr.toString().split(',').map(item => parseFloat(item))

  }

3.使用正则替换

4.循环递归

  思路:循环判断数组的每一项是否是数组:Array.isArray(arr[i])

     是数组就递归调用上面的扁平化一层的代码 result = result.concat(flatten(arr[i]))

     不是数组,直接通过push添加到返回数组

复制代码
  function flatten(arr){

    let res = []
    arr.forEach(item => {

      if(Array.isArray(item)){

        result = result.concat(flatten(item))
      }else{

        res.push(item)
      }
    })
    return res
  }
复制代码

  增加参数控制扁平化深度 手写flat

  

复制代码
const eachFlat = (arr = [], depth = 1) => {
    const result = []
    (function flat(arr,depth) {
        arr.forEach((item) => {
           if(Array.isArray(item) && depth > 0){
                 flat(item,depth - 1)
            }else{
                  result.push(item) 
           }
        })
    })(arr,depth) 
    return result
}   
复制代码

 

posted @   baller  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示