Skip to content

Deep clone objects in JavaScript with structuredClone()

JavaScript Dasun Kalupahana 87 views

const orig = { user: { name: "Ada", tags: ["a"] }, when: new Date(0), ids: new Set([1, 2]) };
const copy = structuredClone(orig);
copy.user.tags.push("b");
console.log(orig.user.tags, copy.user.tags);
console.log(copy.when instanceof Date, copy.ids instanceof Set);
// [ 'a' ] [ 'a', 'b' ]
// true true

Makes a true deep copy and keeps Date, Set and Map. It avoids the JSON.parse(JSON.stringify()) hack, which turns Dates into strings and drops Sets. Needs Node 17+, Chrome 98, Firefox 94 or Safari 15.4.

Learn more on the blog

Get new articles in your inbox

Practical tutorials and deep dives, about once a week. No spam, unsubscribe anytime.

Privacy policy

Add DEV Talk to your Home Screen

  1. 1 Tap the Share button in Safari's toolbar.
  2. 2 Scroll down and tap Add to Home Screen.
  3. 3 Tap Add. Open it from the Home Screen to read like an app and to turn on notifications with the bell.

We use cookies to improve your experience and analyze traffic. By continuing, you agree to our Privacy Policy.