迭代版 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;
}
© 版权声明
THE END
喜欢就支持一下吧
点赞158 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容