js 數組扁平化


 數組扁平化:將一個多維數組變為一維數組

// 二維數組
const arr = [1, [2,3],[4,5]];
const flatArr1 = arr.join().split(",");  // 方法1
const flattArr2 = arr.toString().split(",");  // 方法2

arr.join(separator): 將數組中的所有元素放入一個字符串。separator:指定數組元素組成新字符串時的分隔符,不填寫時,默認逗號為分隔符。

str.split(separator, any): 把字符串分割為字符串數組。 separator: 從該參數指定的符號處,將字符串分割為數組。

arr.toString(): 把數組轉換為字符串,並返回結果。返回值與沒有參數的 join() 方法返回的字符串相同。

// 多維數組
const arr = [1,[2,[3,[4]]]];
const flatArr3 = arr.flat(4);    // 方法3

arr.flat(num): 用於將嵌套的數組“拉平”,變成一維的數組。返回一個新數組,對原數據沒有影響。num:可選。默認為2,即拉平兩層數組。如果拉平多層,可用關鍵字Infinity作為參數。falt()方法會跳過數組中的空位。

// 多維數組 方法4
var arr = [1,[2],[3,[4]],[5,[6,[7,8]]]];
flatArr4= (arr)=> [].concat(...arr.map(v => Array.isArray(v) ? deepFlattenFn(v): v))
flatArr4(arr)

arr.concat(arr1,arr2,...,arrN): 連接兩個或多個數組。參數可以是具體的值,也可以是數組對象。可以是任意多個。

// 多維數組 方法5
const flatten= arr => arr.reduce((item, next) => item.concat( Array.isArray(arr)? flatten(next): next, []));

arr.reduce(): 函數累加器,接受一個函數作為參數,對數組中的值從左到右依次進行處理。

語法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

  initialValue: 傳遞給函數的初始值,可選。

  function:函數參數

    total: 必需。初始值

    currentValue:必需。當前元素

    currentIndex:可選。當前元素的索引

    arr:可選。當前元素所處的數組對象

 


免責聲明!

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



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