平铺数组可以使用ES6的flat方法。
但是在微信小程序里面并不支持ES6的flat方法,所以我写了下面这个递归函数
let flat=function(arr,n=0){
return arr.reduce((a,b)=>{
if(Object.prototype.toString.call(b)==='[object Array]'&&n--){
return a.concat(flat(b,n))
}else{
return a.concat(b)
}
},[])
}
let arr=[1,[[2,3,[4]]]]
console.log(flat(arr,Infinity))
//第二个参数Infinity表示展开所有层,因为Infinity加减乘除的结果仍然是Infinity,且Infinity的布尔值为真
另外还有一个简洁的办法,但是会把数组的每一项都转换成字符串,且会丢掉值为(,)的项
var arr=[1,[2,[3,4,5],6,7,8],90]
console.info(arr.toString().replace(/,/g,'').split(','))
//或
console.log(arr.toString().split('').filter(v=>v!==','))