js數組扁平化 -flatten


數組扁平化(降維過程,多維數組經過扁平化變成一維數組)。

方法有很多,下面只列舉幾種

方法一:

ES6的 arr.flat(Infinity)方法會遞歸到指定深度將所有子數組連接,並返回一個新數組, depth指定嵌套數組中的結構深度,默認值為1,不管多少層則可以用Infinity關鍵字作為參數。

 //數組扁平化
 let arr = ['a', 2, [3, 'b', 5, [6, 7], 8], 9, 10, [11, [12, 13]]];
 console.log(arr.flat(Infinity)) //["a", 2, 3, "b", 5, 6, 7, 8, 9, 10, 11, 12, 13]

  

方法二:

遞歸實現

//數組扁平化
 let arr = ['a', 2, [3, 'b', 5, [6, 7], 8], 9, 10, [11, [12, 13]]];
 //①遞歸實現
let result = [];
let flatten = function(ary) {
for(let i = 0; i < ary.length; i++){
let item = ary[i];
if (Array.isArray(ary[i])){
flatten(item);
} else {
result.push(item);
}
}
return result
}
console.log('遞歸實現---',flatten(arr))  //["a", 2, 3, "b", 5, 6, 7, 8, 9, 10, 11, 12, 13]

 

方法三:

擴展運算符

//數組扁平化
 let arr = ['a', 2, [3, 'b', 5, [6, 7], 8], 9, 10, [11, [12, 13]]];
 //利用擴展運算符
function flatten(arr) {
    var arr;
    while (arr.some(v => Array.isArray(v))) {  //arr.some() 其中存在一個滿足條件的,就會返回true,都不滿足返回false
        arr = [].concat(...arr);
    }
    console.log(arr)
    return arr;
}
console.log('擴展運算符---',flatten(arr))  //["a", 2, 3, "b", 5, 6, 7, 8, 9, 10, 11, 12, 13]

  

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM