數組扁平化即将多元數組轉化為一維數組:
例: [1,2,3,4,5,[2,3,4,[6,10]]]==>[1,2,3,4,5,2,3,4,6,10];
實作數組扁平化的方法有好幾種,在這裡隻說一種我比較常用的,自己感覺比較核心的方法,即周遊數組arr,若arr[i]為數組則遞歸周遊,直至arr[i]不為數組然後與之前的結果concat。
代碼實作:
function flatten(arr) {
var res = [];
arr.map(item => {
if(Array.isArray(item)) {
res = res.concat(flatten(item));
} else {
res.push(item);
}
});
return res;
}
或者:
var arr = [[1,2,3],4,5,6,[[7]],[]] //多元數組
//将需要轉化的數組,以及最後需要傳回的數組進行傳參
function flatten(array,result = []){
//循環數組中的每一項,如果這一項是數組,則再次調用這個函數,
//否則直接将這項push到結果中,并且return出來
for(var i of array){
if(Array.isArray(i)){
flatten(i,result)
}else{
result.push(i)
}
}
return result;
}
console.log(flatten(arr))