一般的数组扁平化,一镜到底,中间不停,如果只让你扁平化一个数组,并且指定层级的话,怎么实现呢,在此记录一下
const arr = [
1,
[
[1,2,3, [4,5,6, [5,6,7,[3,4,5]]]]
],
[
[
{a: 1},
200,
{
b: 300,
c: 200
},
[
3,4,5,
[
5,6,7,[
3,4,5
]
]
]
]
]
]
/**
* 数组扁平化
* 只扁平至指定层级
* @param {Array} arr
* @param {number} level
*/
function flatten(arr, level) {
function walk(arr, currLevel) {
let res = [];
for (let item of arr) {
if (Array.isArray(item) && currLevel < level) {
res = res.concat(walk(item, currLevel + 1));
} else {
res.push(item)
}
}
return res;
}
return walk(arr, 1);
}
var res = flatten(arr, 3);
console.log(res);