数组扁平化的几种方式
let arr = [1, 2, 3, [4, 5, [6, 7, [8]]]];
方式一:ES6 flat
let newArr = arr.flat(Infinity)
console.log(newArr, 'newArr')
方式二:递归处理
const flat = (arr) => {
let result = [];
for (const item of arr) {
item instanceof Array ? result = result.concat(flat(item)) : result.push(item)
}
return result;
}
方式三:reduce 递归
const flat2 = (arr) => {
return arr.reduce((prev, cur) => {
return prev.concat(cur instanceof Array ? flat(cur) : cur)
}, [])
}
方式四:while 循环
const flat3 = (arr) => {
while (arr.some(Array.isArray)) {
arr = [].concat(...arr)
}
return arr
}