方法一:apply结合concat拉平数组
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]复制代码
由上面的例子可以看出,改方法对三维数组的转换时失败的;
方法二:使用es6的flat()方法
let arr = [1,[2,3],4,[5,6]];
console.log( arr.flat() ) //[1,2,3,4,5,6]复制代码
flat()默认是拉平一层,但是要想拉平多层且我们不知道该数组的是几维数组时,我们可以用Infinity作为参数,可以实现多维数组转换为一维数组
let arr = [1,[2,[3,4]],5,6]
console.log( arr.flat(Infinity) ) //[1,2,3,4,5,6]复制代码
但是要注意,因为flat()方法为es6的方法,在平时写代码时要注意有些手机对于es6的代码时不支持的,需要编译的,切忌踩这个坑。