美文网首页
数组扁平化的几种方法

数组扁平化的几种方法

作者: AAA前端 | 来源:发表于2021-07-08 14:20 被阅读0次
    [1, [2, 3, [4, 5]]]  ------>    [1, 2, 3, 4, 5]
    
    1. 使用reduce方法递归实现
    function flatten(list){
        return list.reduce((list,item)=>{
          return list.concat(Array.isArray(item) ? flatten(item):  item);
        },[])
      }
    
    1. 使用toString() 和map 方法

    [1, [2, 3, [4, 5]]].toString() => '1,2,3,4,5'
    然后按逗号分隔为数组 => ['1', '2', '3', '4', '5']
    再把数组中每项字符串转换为数字

    function flatten(list){
      return list.toString().split(',').map(item=>Number(item))
    }
    
    1. join()与map方法
      与 toString()方法一样 join也可以把数组转换为一维字符串
    function flatten(list){
      return list.join().split(',').map(item=>Number(item))
    }
    
    1. map方法递归
    
    function flatten(arr){
      var list =  []
      arr.map(item=>{
        if(Array.isArray(item)){
          list = list.concat(flatten(item))
        } else {
          list.push(item)
        }
      })
      return list
    }
    
    1. es6的扩展运算符能将二维数组变为一维
      [...[1,2,[4]]] => [1,2,[4]]
    function flatten(arr) {
        while(arr.some(item=>Array.isArray(item))) {
            arr = [].concat(...arr);
        }
        return arr;
    }
    
    1. flat(Infinity)
    arr.flat(Infinity)
    
    1. 正则
    JSON.stringify(arr).replace(/[\[|\]]/g, '').split(',').map(item=>Number(item))
    

    参考:https://www.cnblogs.com/chenhuichao/p/13564682.html

    相关文章

      网友评论

          本文标题:数组扁平化的几种方法

          本文链接:https://www.haomeiwen.com/subject/gbftpltx.html