(1) 不考虑扁平系数,直接扁平到底
// 使用 concat ... whilefunctionflatten1(arr){while(arr.some(item=> Array.isArray(item))){// 每执行一次,扁平一级
arr =[].concat(...arr)}return arr
}// 如果数组中的值都是numberfunctionflatten2(arr){return arr.toString().split(',').map(item=>+item)}// 循环递归扁平化functionflatten3(arr){let res =[]let len = arr.length
for(let i =0; i < len; i++){if(Array.isArray(arr[i])){
res = res.concat(flatten3(arr[i]))}else{
res.push(arr[i])}}return res
}(2) 实现类似 es6 的flat 函数
functionmyFlat(arr, flatNum =1){// 扁平次数constFLATNUM= flatNum
const len = arr.length
let res =[]for(let i =0; i < len ; i ++){if(Array.isArray(arr[i])&&FLATNUM>0){
res = res.concat(myFlat(arr[i],FLATNUM-1))}else{
res.push(arr[i])}}return res
}let arr2 =[1,2,3,[4,[5,6]]]myFlat(arr2)// [1,2,3,4, [5,6]]myFlat(arr2,1)// [1,2,3,4, [5,6]]myFlat(arr2,2)// [1,2,3,4,5,6]myFlat(arr2,Infinity)// [1,2,3,4,5,6]