什么是数组扁平化
数组扁平化也就是将一个多维数组转变为一维数组的过程,例如[1,2,3,[1,3],[1,4,[1,3]]]这个多维数组扁平化处理成一维数组[1, 2, 3, 1, 3, 1, 4, 1, 3]。
下面讲讲处理数组扁平化的一些方法
1.使用最基础也是最容易想到的递归遍历
function flatten(arr){
let result = [];//定义返回结果数组
for(let i = 0;i < arr.length;i++){
if(Array.isArray(arr[i])){
result = result.concat(flatten(arr[i]))
}else{
result.push(arr[i])
}
}
return result
}
2.使用toString方法+split+强制类型转换
function flatten(arr){
return arr.toString().split(',').map(item=>Number(item))//这里的Number是数组都为number'类型的情况,分情况考虑
}
3.就是es6给我们写好的方法(前提是要记得语法)可以事半功倍
function flatten(arr) {
return arr.flat(Infinity);//flat的参数表示深度遍历的层次默认值为1,Infinity表示可以最深
}
4.使用堆栈无需递归stack
function flatten(arr){
const stack = arr//定义栈
const res = []//返回结果的数组
while(stack.length>0){
let next = stack.pop()
if(Array.isArray(next)){
//将next数组的值解构出来重新入栈
stack.push(...next)
}else{
res.unshift(next)
}
}
return res
}