js把多維數組轉換成一維數組的方法

方法一:apply結合concat拉平數組es6


let arr = [1,[2,3],4,[5,6]];
console.log( [].concat.apply( [], arr ) )    //[1,2,3,4,5,6]複製代碼

上面的方法是使用apply結合concat,缺點是隻能將二維轉一維,多維數組就有問題了
數組

let arr = [1,[2,[3,4]],5,6]
console.log( [].concat.apply( [], arr ))    //[1,2,[3,4],5,6]複製代碼

由上面的例子能夠看出,改方法對三維數組的轉換時失敗的;bash

方法二:使用es6的flat()方法app

let arr = [1,[2,3],4,[5,6]];
console.log( arr.flat() )    //[1,2,3,4,5,6]複製代碼

flat()默認是拉平一層,可是要想拉平多層且咱們不知道該數組的是幾維數組時,咱們能夠用Infinity做爲參數,能夠實現多維數組轉換爲一維數組ui

let arr = [1,[2,[3,4]],5,6]
console.log( arr.flat(Infinity) )    //[1,2,3,4,5,6]複製代碼

可是要注意,由於flat()方法爲es6的方法,在平時寫代碼時要注意有些手機對於es6的代碼時不支持的,須要編譯的,切忌踩這個坑。spa