数组扁平化
小于 1 分钟
数组扁平化
直接使用API
let arr = [1, [2, [3, 4, 5]]];
arr.flat(2) // [1,2,3,4,5]
递归遍历
let arr = [1, [2, [3, 4, 5]]];
function flatten(arr){
const result = []
for(const item of arr){
if(Array.isArray(item)){
result.push(...flatten(item))
}else{
result.push(item)
}
}
return result
}
flatten(arr)
reduce递归
let arr = [1, [2, [3, 4, 5]]];
function flatten(arr){
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur)
}, [])
}
flatten(arr)
扩展运算符多次调用
let arr = [1, [2, [3, 4, 5]]];
function flatten(arr){
while(arr.some(item => Array.isArray(item))){
arr = [].concat(...arr)
}
return arr
}
flatten(arr)
字符串化再分割
let arr = [1, [2, [3, 4]]];
function flatten(arr) {
return arr.toString().split(',').map(item => Number(item))
}
console.log(flatten(arr)); // [1, 2, 3, 4,5]