- 技巧版
// 下面2个方式都可以实现
const flatten = (arr) => arr.toString().split(',').map(item => +item) // 方法1
const flatten = (arr) => arr.join().split(',').map(item => +item) // 方法2
console.log(flatten([[1, [2, 3]], 4, 5])) // Array(5) [1, 2, 3, 4, 5]
- 功能版
const flatten = (arr, deep = 1) => {
return arr.reduce((cur, next) => {
return Array.isArray(next) && deep > 1 ?
[...cur, ...flatten(next, deep - 1)] :
[...cur, next]
},[])
}
console.log(flatten([[1, [2, 3]], 4, 5])) // Array(3) [Array(2), 4, 5]
console.log(flatten([[1, [2, 3]], 4, 5],2)) // Array(4) [1, Array(2), 4, 5]
console.log(flatten([[1, [2, 3]], 4, 5], 3)) // Array(5) [1, 2, 3, 4, 5]