zoukankan      html  css  js  c++  java
  • flatMap的使用及重构

    flatMap是一个处理扁平化数组的方法

    优点:可以使其成为一个单层的数组。
    缺点:只能处理内嵌一层的解构
    先看其应用:

    var arr=[0,"我",[1,2,3],[4,5,6,[7,8,9]]];
    var s=arr.flatMap(function(item,index,array){
                return item;
       })
    console.log(s);  //[0,"我",1,2,3,4,5,6,Array(3)]   
    console.log(s===arr)  //false  //可以看到返回的是新的数组,引用关系发生了变化
    

    关于flatMap的重构

           var arr=[0,"我",[1,2,3],[4,5,6,[7,8,9]]];
            function flatMap(array,fn){
                var arr1=[];
                // if(array.length===1 && !Array.isArray(array[0])){
                //     arr1.push(array);
                // }
                for(var i=0;i<array.length;i++){
                    if(Array.isArray(fn(array[i],i,array))){   //遍历array元素,判断array内部是否是数组
                        for(var j=0;j<array[i].length;j++){      //如果只数组,直接push进去新的数组,由于只能解析一层嵌套,就不用递归了
                            arr1.push(array[i][j]);
                        }
                    }else{
                        arr1.push(array[i]);
                    }
                }
                return arr1;
            }
            var s=flatMap(arr,function(item,index,array){
                return item;
            })
            console.log(s);
    
  • 相关阅读:
    [SDOI2006] 保安站岗
    [NOIP2003] 传染病控制
    [USACO13OPEN] 照片Photo
    [HNOI/AHOI2018] 道路
    [TJOI2007] 线段
    [HAOI2009] 逆序对数列
    codeforces|CF1054D Changing Array
    hihoCoder 1785
    luogu 1712
    luogu 3248
  • 原文地址:https://www.cnblogs.com/94-Lucky/p/13303531.html
Copyright © 2011-2022 走看看