<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
const myObject = {
level1Key1: {
level2Key1: {
level3Key1: "value1",
level3Key2: "value2",
level3Key3: "value3",
level3Key4: "value4",
level3Key5: "value5"
},
level2Key2: {
level3Key6: "value6",
level3Key7: "value7",
level3Key8: "value8",
level3Key9: "value9",
level3Key10: "value10"
},
level2Key3: {
level3Key11: "value11",
level3Key12: "value12",
level3Key13: "value13",
level3Key14: "value14",
level3Key15: "value15"
}
},
level1Key2: {
level2Key4: {
level3Key1: "value1",
level3Key2: "value2",
level3Key3: "value3",
level3Key4: "value4",
level3Key5: "value5"
},
level2Key5: {
level3Key6: "value6",
level3Key7: "value7",
level3Key8: "value8",
level3Key9: "value9",
level3Key10: "value10"
},
level2Key6: {
level3Key11: "value11",
level3Key12: "value12",
level3Key13: "value13",
level3Key14: "value14",
level3Key15: "value15"
}
},
level1Key3: {
level2Key7: {
level3Key1: "value1",
level3Key2: "value2",
level3Key3: "value3",
level3Key4: "value4",
level3Key5: "value5"
},
level2Key8: {
level3Key6: "value6",
level3Key7: "value7",
level3Key8: "value8",
level3Key9: "value9",
level3Key10: "value10"
},
level2Key9: {
level3Key11: "value11",
level3Key12: "value12",
level3Key13: "value13",
level3Key14: "value14",
level3Key15: "value15"
}
}
};
console.log(tripleNestedObject);
myCopy = JSON.parse(JSON.stringify(myObject));
myCopy = JSON.parse(JSON.stringify(myObject));
myCopy = structuredClone(myObject);
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
Lodash CloneDeep | |
Json Clone | |
structured Clone |
Test name | Executions per second |
---|---|
Lodash CloneDeep | 112235.8 Ops/sec |
Json Clone | 122024.3 Ops/sec |
structured Clone | 64570.6 Ops/sec |
The benchmark defined in the provided JSON compares three different methods for deep cloning a JavaScript object. Each method has its own advantages and disadvantages, as well as varying levels of performance, which is the focus of this benchmark.
Lodash's cloneDeep
:
myCopy = JSON.parse(JSON.stringify(myObject));
JSON Clone:
myCopy = JSON.parse(JSON.stringify(myObject));
undefined
, Date
objects, or circular references, leading to potential data loss in more complex scenarios.Structured Clone:
myCopy = structuredClone(myObject);
structuredClone()
function is a built-in JavaScript method for creating a deep copy of an object, capable of handling complex data types (including dates, typed arrays, and other non-plain objects).Based on the benchmark results:
structuredClone
is a better choice. For typical use cases where you are handling basic objects, JSON cloning may be sufficient and is the most performant.This benchmark provides valuable insights into cloning techniques, guiding developers in selecting the right approach based on performance requirements and object complexity.