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);
posted on 2020-07-15 08:09  94Lucky  阅读(575)  评论(0编辑  收藏  举报