假如有乙個陣列 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...