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