实现要求:参考MDN
Array.prototype.flat() - JavaScript | MDN (mozilla.org)
Array.prototype.myFlat = function (depth = 1) {
var cur_dep = 1;
let len = this.length;
var unpack = function (arr) {
let len = arr.length;
let res = [];
//深度控制
if (cur_dep <= depth) {
for (let i = 0; i < len; i++) {
//需要展开
if (Array.isArray(arr[i])) {
//DFS,不要忘记解构之后再push进去
cur_dep += 1;
res.push(...unpack(arr[i]));
cur_dep -= 1;
}
else res.push(arr[i]);
}
}
else {
res.push(...arr);
}
return res;
}
return unpack(this);
}
var arr = new Array(0, 1, 2, [[[3, 4]]]);
console.log(arr.myFlat(2));