1. 程式人生 > >js數組拍平(數組扁平化)的五種方式

js數組拍平(數組扁平化)的五種方式

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數組拍平(數組扁平化)的五種方式