• js数组拍平(数组扁平化)的六种方式


    1.数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组

    2.实现

    var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];

    a:递归实现

    function fn(arr){
        let arr1 = [] arr.forEach((val)
    =>{ if(val instanceof Array){ arr1 = arr1.concat(fn(val)) }else{ arr1.push(val) } }) return arr1 }

    b:reduce实现

    function fn(arr){
        return arr.reduce((prev,cur)=>{
            return prev.concat(Array.isArray(cur)?fn(cur):cur)
        },[])
    }

    c:flat 

    参数为层数(默认一层)

    arr.flat(Infinity)

     d:扩展运算符

    function fn(arr){
        let arr1 = [];
        let bStop = true;
        arr.forEach((val)=>{
            if(Array.isArray(val)){
                arr1.push(...val);
                bStop = false
            }else{
                arr1.push(val)
            }
        })
        if(bStop){
            return arr1;
        }
        return fn(arr1)
    }

    e:toString

    let arr1 = arr.toString().split(',').map((val)=>{
                return parseInt(val)
            })
            console.log(arr1)

     f:apply

    function flatten(arr){
         while(arr.some(item => Array.isArray(item))){
               arr =  [].concat.apply([],arr);
         }
          return arr;
    }
  • 相关阅读:
    jquery动画效果---animate()--滚屏
    一个前端的自我修养
    开发和测试
    jquery.find()
    c99和c++11的差异之一
    容器经典图
    C/C++中的##用法
    【心学.悟道】千圣皆过影,良知乃吾师
    memcpy, memset代码改写的方式
    三大软件原则
  • 原文地址:https://www.cnblogs.com/guan-shan/p/10165737.html
Copyright © 2020-2023  润新知