I have an array of objects that is an input. Lets call it content
.
When trying to deep copy it, it still has a reference to the previous array.
I need to duplicate that input array, and change one property of the duplicated part.
So long I've tried different methods that weren't successful.
ES6 way:
public duplicateArray() { arr = [...this.content] arr.map((x) => {x.status = DEFAULT}); return this.content.concat(arr); }
The slice
way:
public duplicateArray() { arr = this.content.slice(0); arr.map((x) => {x.status = DEFAULT}); return this.content.concat(arr); }
In both of them all the objects inside the array have status: 'Default'
.
What's the best approach to deep copy the array in Angular 2?
Explanation : = represents a reference whereas angular. copy() creates a new object as a deep copy. Using = would mean that changing a property of response.
Check this:
let cloned = source.map(x => Object.assign({}, x));
Simple:
let objCopy = JSON.parse(JSON.stringify(obj));
This Also Works (Only for Arrays)
let objCopy2 = obj.slice()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With