一. 數(shù)組扁平化
數(shù)組的 扁平化就是將一個(gè)二維或者多維的數(shù)組進(jìn)行處理成一個(gè)一維的數(shù)組
形同var arr = [1,2,3,[4,5,6,[7,8,9]]]
-
reduce
var arr = [1,2,3,[4,5,6,[7,8,9]]] function Fn ( arr ){ let newArr = arr.reduce((res,item)=>{ return [].concat(res,item) }) const flag = newArr.some(item=>Array.isArray(item)) if(flag){ return Fn(newArr) }else{ return newArr } } console.log(Fn(arr))
-
toString&split
function flattening(arr) { let arr1 = arr.toString().split(","); //此時(shí)得到的每一項(xiàng)的字符數(shù)組 //接著轉(zhuǎn)數(shù)字 let arr2 = arr1.map(item => { return item * 1; }) return arr2; } console.log(flattening(arr))
-
join&split
function flattening(arr) { let arr1 = arr.join().split(","); //此時(shí)得到的每一項(xiàng)的字符數(shù)組 //接著轉(zhuǎn)數(shù)字 let arr2 = arr1.map(item => { return item * 1; }) return arr2; }
-
遞歸
function fn(arr) { var res = [] arr.map(item => { if(Array.isArray(item)) { res = res.concat(fn(item)) }else{ res.push(item) } }) return res }
-
擴(kuò)展運(yùn)算符
var arr=[1,[2,[3,4]],5,6] while(arr.some(item =>Array.isArray(item))){ arr = [].concat(...arr) } console.log(arr)