flatten手写实现
- 理解: 取出嵌套数组(多维)中的所有元素放到一个新数组(一维)中
- 如: [1, [3, [2, 4]]] ==> [1, 3, 2, 4]
方法一:递归 + reduce() + concat()
function flatten1(array) {
return array.reduce((pre, item, index) => {
if (!Array.isArray(item)) {
pre.push(item)
} else {
pre = pre.concat(flatten1(item))
}
return pre
}, [])
}
console.log(flatten1([1, [3, [2, 4]]]));
方法二: … + some() + concat()
function flatten2(array) {
let arr = [].concat(...array)
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
}
return arr
}