js數組拍平(數組扁平化)的五種方式
阿新 • • 發佈:2018-12-24
red sar isa spl bst inf pre for ring
1.數組拍平也稱數組扁平化,就是將數組裏面的數組打開,最後合並為一個數組
2.實現
var arr = [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; }
js數組拍平(數組扁平化)的五種方式