迭代版 Array.prototype.flat() 实现
function myflatten(arr, deep) {
let result = [];
let temp1 = arr; // 当前用来遍历的数组
let temp2 = []; // 保存下一次用来遍历的数组
while (deep) {
// 如果元素是数组就放到temp2里面去,不是就放到result里
for (let i = 0; i < temp1.length; i++) {
if (temp1[i] instanceof Array) {
temp2.push(...temp1[i]);
} else {
result.push(temp1[i]);
}
}
deep--;
// 到达深度后要把没遍历的数组放到result里
if (deep == 0) {
result.push(...temp2);
} else {
temp1 = temp2;
temp2 = [];
}
}
return result;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论