目录
数组的扁平化就是将一个嵌套多层的数组 array(嵌套可以是任何层数)转换为只有一层的数组。
var arr = [1, [2, [3, 4, 5]]];
console.log(flatten(arr)); // [1, 2, 3, 4,5]
本文就是要用多种方法实现这个 flatten 函数
1. 常规递归法
var a = [1, [2, [3, 4, 5]]];
function flatten(arr) {
let newArray = []
for (let i of arr) {
if (i.constructor === Array) {
newArray = newArray.concat(flatten(i))
} else {
newArray.push(i)
}
}
return newArray
}
console.log(flatten(a)); // [1, 2, 3, 4,5]
这段代码核心就是循环遍历过程中的递归操作,就是在遍历过程中发现数组元素还是数组的时候进行递归操作,把数组的结果通过数组的 concat 方法拼接到最后要返回的 result 数组上,那么最后输出的结果就是扁平化后的数组。