首先我们要知道原生的flat函数实现的是什么功能, 传递两个值,一个是用于扁平化的数组,一个是扁平化的深度
实现办法就是利用循环(使用递归可以简单实现,即全部扁平化或者只扁平化一层,但是不好控制深度),相对来说,利用循环更好控制扁平化的深度
function flattern(arr, n) {
if (n == undefined) {
n = arr.length;
}
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
n --;
if (!n) {
break;
}
}
return arr;
}
console.log(flattern([1, 2, 3, [4, 5, 6, [7, 8, 9, [1, 1, 1, [1, 1]]]]]));
如果大家有更好的实现办法,欢迎讨论研究