//1.普通递归实现//1.普通递归实现
var arr=[1,2,[3,4,[5]],6]
function flatten1(arr){
let result=[]
for(let i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
result=result.concat(flatten1(arr[i]))
}else{
result.push(arr[i])
}
}
return result
}
let arr1=flatten1(arr)
console.log(arr1)
//2.使用reduce实现
function flatten2(arr){
return arr.reduce((pre,cur)=>{
return pre.concat(Array.isArray(cur)?flatten2(cur):cur)
},[])
}
let arr2=flatten2(arr)
console.log(arr2)
//3.使用some和...展开运算符实现
function flatten3(arr){
while(arr.some(item=>Array.isArray(item))){
arr=[].concat(...arr)
}
return arr
}
let arr3=flatten3(arr)
console.log(arr3)
console.log([].concat(...arr))
//4.split和toString实现. Array的toString方法会把数组直接打平哈哈
//但是上面两者结合数组中是字符串数字,需要将字符串数字转换成数字,所以加入的map
function flatten4(arr){
//return arr.toString().split(',')//但是这样里面的数字是以字符串的形式存到数组中的
return arr.toString().split(',').map(item=>item*1)
}
let arr4=flatten4(arr)
console.log(arr4)
//5.flat实现
function flatten5(arr){
return arr.flat(Infinity)
}
let arr5=flatten5(arr)
console.log(arr5)
//使用JSON和正则实现
console