扁平化多维数组的不同实现方式
普通递归
const flatten = (arr) => {
let ret = []
const recursive = (iterable) => {
iterable.forEach((item) => {
if (Array.isArray(item)) {
recursive(item)
} else {
ret.push(item)
}
})
}
recursive(arr)
return ret
}
flatten([1,[2,[3,[5]]]]) // [1, 2, 3, 5]
reduce 递归调用
const flatten = (arr) => {
return arr.reduce((cur, prev) => {
return Array.isArray(prev) ? cur.concat(flatten(prev)) : cur.concat(prev)
}, [])
}
flatten([1,[2,[3,[5]]]]) // [1, 2, 3, 5]