HTML Preparation code:
AخA
 
1
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
x
 
var MyObject = {
    description: 'Creates a deep copy of source, which should be an object or an array.',
    myNumber: 123456789,
    myBoolean: true,
    array: [{
            jayson: {
                stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
                parse: 'JSON.parse() method parses a JSON string...'
            }
        },
        {
            jayson: {
                stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
                parse: 'JSON.parse() method parses a JSON string...'
            }
        }, {
            jayson: {
                stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
                parse: 'JSON.parse() method parses a JSON string...'
            }
        }
    ],
    jayson: {
        stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
        parse: 'JSON.parse() method parses a JSON string...'
    }
};
var myCopy = null;
function recursiveDeepCopy(o) {
    var newO,
        i;
    if (typeof o !== 'object') {
        return o;
    }
    if (!o) {
        return o;
    }
    if ('[object Array]' === Object.prototype.toString.apply(o)) {
        newO = [];
        for (i = 0; i < o.length; i += 1) {
            newO[i] = recursiveDeepCopy(o[i]);
        }
        return newO;
    }
    newO = {};
    for (i in o) {
        if (o.hasOwnProperty(i)) {
            newO[i] = recursiveDeepCopy(o[i]);
        }
    }
    return newO;
}
Tests:
  • Lodash CloneDeep

     
    myCopy = _.cloneDeep(MyObject);
  • Json Clone

     
    myCopy = JSON.parse(JSON.stringify(MyObject));
  • recursiveDeepCopy

     
    myCopy = recursiveDeepCopy(MyObject);
  • structured clone

     
    myCopy = structuredClone(MyObject)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Lodash CloneDeep
    Json Clone
    recursiveDeepCopy
    structured clone

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 7 months ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:129.0) Gecko/20100101 Firefox/129.0
Firefox 129 on Mac OS X 10.15
View result in a separate tab
Test name Executions per second
Lodash CloneDeep 327484.0 Ops/sec
Json Clone 515958.8 Ops/sec
recursiveDeepCopy 2759553.2 Ops/sec
structured clone 376813.0 Ops/sec