六种方式 拍平数组 扁平化数组
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
| function fn(arr){ let arr1 = []; arr.forEach((val)=>{ if(val instanceof Array){ arr1 = arr1.concat(fn(val)) }else{ arr1.push(val) } }) return arr1 }
|
reduce实现
1 2 3 4 5
| function fn(arr){ return arr.reduce((prev,cur)=>{ return prev.concat(Array.isArray(cur)?fn(cur):cur) },[]) }
|
flat
扩展运算符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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) }
|
toString
1 2 3 4
| let arr1 = arr.toString().split(',').map((val)=>{ return parseInt(val) }) console.log(arr1)
|
apply
1 2 3 4 5 6
| function flatten(arr){ while(arr.some(item => Array.isArray(item))){ arr = [].concat.apply([],arr); } return arr; }
|