方法一: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