It happens a lot that you want to copy a variable, with an Object or Array, to manipulate the data and use it afterward. But when we create an ar...
For further actions, you may consider blocking this person and/or reporting abuse
Does
const newArr = oldArr.map(x => x)
not work? If it does this would be a lot more efficient as it completely skip the string conversion on both sides.That will work as a 'shallow copy' (in a different meaning than used above), since modifying an item from the original array will also cause a change in the equivalent item in the copied array (since those items are in fact the very same items).
You could use the spread-operator to create a deep copy of the Array. E.g.
const duplicateObject = originalObject.map(x => ({...x}));
That's a clean way to improve the depths of the copy, but it once again falls short when the object nesting goes down 3 levels instead of 2. To resolve that, you'd have to do a manual deep copy (in whatever succinct way).
The performance of the parse(stringify(x)) approach is notably not that bad, particularly compared to a deep copy (although the former of course copies only data, not functions). For example: jsperf.com/deep-copy-vs-json-strin...
Tests were very helpful. Although I am not intending to run the copy more than once a restart of the app. So this works for me.
Thanks guys for all the questions and answers! But like Alain said, the
oldArr.map(x => x)
will keep the reference.Maybe there are other methods like this, but when you want to remove the reference, then this is the only option that I'm aware of ;-)
I had to use this thing to create a copy of the array with objects, but objects would be stripped of like 12 unnecessary keys before they are parsed by my other functions. Using it for filtering the array, that is considerably large. This does the job well so far.
With lodash method _.cloneDeep is working like a charm
lodash.com/docs/4.17.11#cloneDeep
Hi,
I tried this but has a problem
My object contains a date Property, after Json Stringify, in the copied object, it will come as the string, please give me a solution on this if you have
Thanks man, it worked.
Thank you so much dude I was having a major problem with this. I was using arr.slice() and [...arr] but nothing was working. Thanks dude.
This helped me a lot. I also learned a very important concept. Thank you very much for this!
I have two questions
1.- what about performance on very large objects?
2.- what about the spread syntax?
What if you want to also include real copies of any methods that are in the object?