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