const a = [1, [2, [3, [4, 5]]], 6]
const b =[['a','b'],['c','d'],['e','f']]
//1. es6 api
// const a1 = a.flat() // 结构深度默认 1
// const a2 = a.flat(1)
// const a3 = a.flat(2)
// const a4 = a.flat(3)
// const a5 = a.flat(Infinity) // 直接展开任意深度
// console.log('a1', a1)
// console.log('a2', a2)
// console.log('a3', a3)
// console.log('a4', a4)
// console.log('a5', a5)
// // 封装成函数
// function flatten(params) {
// return params.flat(Infinity)
// }
// console.log(flatten(a));
//2. toString 限制 全部是数字
// function flatten(arr) {
// return arr.toString().split(',').map(item =>parseFloat(item))
// }
// console.log(flatten(a));
// console.log(a.toString()) //'1,2,3,4,5,6' string
// console.log(a.toString().split(',')) //以“,”进行分割 ['1', '2', '3', '4', '5', '6']
// console.log(a.toString().split(',').map(item => parseInt(item))) // 转换成数字
// 3. for + 递归
// const x =[1,[2,[3,[4]]]]
// function flatten(arr){
// let res = []
// for(let i =0;i<arr.length;i++){
// if(Array.isArray(arr[i])){
// // console.log(arr[i])
// // console.log(...flatten(arr[i]),`${i}`)
// res.push(...flatten(arr[i]))
// }else{
// res.push(arr[i])
// }
// }
// return res
// }
// console.log(flatten(x))
// 4. reduce api 递归 concat
// function flatten(arr){
// return arr.reduce((pre,cur)=>{return pre.concat( Array.isArray(cur)? flatten(cur): cur)},[])
// }
// console.log(flatten(a))
console