- 使用es6 api
const a = [1, [2, [3, [4, 5]]], 6]
const b =[['a','b'],['c','d'],['e','f']]
const a1 = a.flat()
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));
- toString 限制 数字
const a = [1, [2, [3, [4, 5]]], 6]
function flatten(arr) {
return arr.toString().split(',').map(item =>parseFloat(item))
}
console.log(flatten(a));
console.log(a.toString())
console.log(a.toString().split(','))
console.log(a.toString().split(',').map(item => parseInt(item)))
- 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])){
res.push(...flatten(arr[i]))
}else{
res.push(arr[i])
}
}
return res
}
console.log(flatten(x))
- reduce api 递归 concat
const a = [1, [2, [3, [4, 5]]], 6]
function flatten(arr){
return arr.reduce((pre,cur)=>{return pre.concat( Array.isArray(cur)? flatten(cur): cur)},[])
}
console.log(flatten(a))