数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组
实现方式如下:
例如var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];想要得到的结果[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;
}