Deep copy of array via map

admin

javascript

глубокое копирование массива:
другие самплы
let c = [1, { a: 3 }, [1, [2, 3]], {b: {b: 3}}];

let b = c.map(function deepClone(el, i, arr) {
    if (Array.isArray(el)) return el.map(deepClone);
    else if (typeof el == 'object' && typeof el !== 'function') {

        function cloneObj(elem) {

            let obj = {};

            for (const key in elem) {
                if (Array.isArray(elem[key])) obj[key] = el.map(deepClone)
                else if (typeof elem[key] == 'object') {
                    
                    obj[key] = { ...cloneObj(obj[key]) }
                }
                else {
                    obj[key] = elem[key];
                }
                return obj;
            }
        }

        return cloneObj(el);

    }
    else return el;
})

console.log(b)

console.log(c[1] == b[1])
console.log(c[2][1] == b[2][1]);
console.log(c[3].b == b[3].b);
(ваш голос учтен)

Прикрепить файл