写一个flatten函数,实现扁平化数组的效果。比如:
let arr = [1, 2, [3, 4, 5, [6, 7], 8], 9, 10, [11, [12, 13]]]
得到 flatten(arr)=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
常规版
function flatten(arr) {
let newArr = []
function flat(arry) {
for (let item of arry) {
if (Array.isArray(item)) {
flat(item)
} else {
newArr.push(item)
}
}
}
flat(arr)
return newArr
}
高级版
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
}
return arr
}
更高级版
const flatten = arr => arr.reduce((pre, cur) => Array.isArray(cur) ? [...pre, ...flatten(cur)] : [...pre, cur], [])