JS 陣列扁平化

2021-09-26 16:34:30 字數 1745 閱讀 6869

假如有乙個陣列 var arr = [1, [2, 3, [4]]] ,我們怎麼能把arr變成[1, 2, 3, 4]呢?即讓多維陣列降維,轉換為只有一層的陣列。

1. 迴圈陣列+遞迴

function

flatten

(arr)

else

}return result;

}flatten

(arr)

// [1,2,3,4]

var arr =[1

,[2,

3,[4

]]];

.concat.([

],arr)

;// [1,2,3,[4]]

function

flatten

(arr)

return arr;

}

3. reduce方法

reduce() 方法對累加器和陣列中的每個元素(從左到右)應用乙個函式,將其減少為單個值。

能使用reduce原因如下:

var flattened = arr.

reduce

(function

(prev, cur),[

])console.

log(flattened)

;// [1,2,3,[4]]

實現思路:使用reduce, 當陣列中還有陣列的話,遞迴呼叫flatten扁平函式(利用reduce扁平), 用concat連線,最終返回arr.reduce的返回值;

function

flatten

(arr),[

])}flatten

(arr)

// [1,2,3,4]

4. es6 展開運算子

可以使用es6 展開運算子的原因如下:

var arr =[1

,[2,

3,[4

]]];

console.

log(

...arr)

;// 1,[2,3,[4]]

實現思路:利用arr.some判斷當陣列中還有陣列的話,遞迴呼叫flatten扁平函式(利用es6展開運算子扁平), 用concat連線,最終返回arr;

function

flatten

(arr)

return arr;

}flatten

(arr)

// [1,2,3,4]

**5. tostring方法(陣列元素為數字) **

如果陣列的元素是數字,那麼我們可以考慮tostring()方法,其他情況不適用。原因如下:

[1,

[2,3

,[4]

]].tostring()

// "1,2,3,4"

實現思路:陣列適用tostring()方法後變成以逗號分割的字串,然後map遍歷陣列把每一項再變回整數並返回map後的結果。

function

flatten

(arr))}

flatten

(arr)

// [1,2,3,4]

參考:

js 陣列扁平化

陣列扁平化是指將乙個多維陣列變為一維陣列 遍歷陣列arr,若arr i 為陣列則遞迴遍歷,直至arr i 不為陣列然後與之前的結果concat 遍歷陣列每一項,若值為陣列則遞迴遍歷,否則concat。function flatten arr 1,2,3,4,5 1,2,3,4,5 2.1.reduc...

js陣列扁平化

所謂陣列扁平化,就是將乙個二維或多維陣列轉換為一維陣列。比如將 1,2 3,4,5 轉化為 1,2,3,4,5 1 首先想到設定乙個空陣列,如果原陣列中的每一項不是陣列,直接push進去,如果是陣列,就與這個空陣列進行連線 實現 let flatarr arr else return result ...

js陣列扁平化

陣列的扁平化,就是將乙個巢狀多層的陣列 array 巢狀可以是任何層數 轉換為只有一層的陣列。var arr 1 2,3,4 扁平化之後 1,2,3,4 實現基本方式 1.reduce 遍歷陣列每一項,若值為陣列則遞迴遍歷,否則concat。function flatten arr 2.tostri...