数组扁平化
数组扁平化就是将多维数组化为一维数组
递归的方式
function flatArr(arr) {
return arr.reduce((result, item) => {
return result.concat(Array.isArray(item) ? flatArr(item) : item)
}, [])
}
测试:
let arr = [1,2,3,[4,5],[6,[7,[8]]]]
console.log(flatArr(arr));
递归实现
function flatArr(arr) {
const result = []
const stack = [...arr]
while(stack.length != 0) {
//重点,从最后一个开始取
const val = stack.pop()
if(Array.isArray(val)) {
//遇到数组直接插入到stack的最后面
stack.push(...val)
} else {
//重点,插入到结果数组中需要从头插入
result.unshift(val)
}
}
return result
}
let arr = [1,2,3,[4,5],[6,[7,[8]]]]
console.log(flatArr(arr));
flat函数实现
const arr = [1, [2,3], [4, [5,[6]]]]
console.log(arr.flat(Infinity)) // [1, 2, 3, 4, 5, 6]
行百里者半九十