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);