扁平化数组(多层嵌套)

方法一:

var arr=[1,[2,[3,[4,5]]]];

function flatten(arr){

var len=arr.length;

var temp=[];

for(var i=0;i<len;i++){

if(Array.isArray(arr[i])){

var child=flatten(arr[i]);

temp=temp.concat(child)

}else{

temp.push(arr[i]);

}

}

return temp;

}

console.log(flatten(arr))

方法二:(es6)

const flatten=arr=>arr.reduce((a,b)=>a.concat(Array.isArray(b)?flatten(b):b),[])

控制扁平的层数:

depth为1是因为它不走递归,多层才递归

function flatten(arr,depth){

var len=arr.length;

var temp=[];

    if(depth===1){

     for(var i=0;i<len;i++){

     if(Array.isArray(arr[i])){

     for(var j=0,len1=arr[i].length;j<len1;j++){

     temp.push(arr[i][j]);

     }

     }

     }

    }else{

        for(var i=0;i<len;i++){

    if(Array.isArray(arr[i])&&depth){

    temp=temp.concat(flatten(arr[i],depth--));

    }else{

    temp.push(arr[i])

    }

    }



    }

    return temp;

}

var arr = [1, 2, [3, 4],[5, 6, [7, 8, [12, 13]], 9], 10, 11];

console.log(flatten(arr,1));

猜你喜欢

转载自blog.csdn.net/qq_41047322/article/details/82670154
今日推荐