数组扁平化
数组扁平化是指将一个多维数组变为一个一维数组。
①使用flat
const arr=[1,[2,[3,[4,5]]],6]
const res1=arr.flat(Infinity)//使用 Infinity 作为深度,展开任意深度的嵌套数组
console.log(res1); //Array(6) 1,2,3,4,5,6
②正则
const arr2=[1,[2,[3,[4,5]]],6]
const res2=JSON.parse('['+JSON.stringify(arr2).replace(/\[|]/g,'')+']')
console.log(res2); Array(6) 1,2,3,4,5,6
③reduce
/*reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。*/
const flatten = arr => {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
}, [])
}
④函数递归
const arr4=[1,[2,[3,[4,5]]],6]
const res4=[];
const fn=arr=>{
for (let i = 0; i < arr4.length; i++) {
if(Array.isArray(arr4[i])){ //Array.isArray()判断某个值是否为数组,返回布尔类型。
fn(arr4[i]);
}else{
res4.push(arr4[i]);
}
}
}
fn(arr)