How to merge objects?

For newer versions (at least 1.4.0) of angular you can use angular.merge

Unlike extend(), merge() recursively descends into object properties of source objects, performing a deep copy.


Copy

var src = { name: 'Apple', price: 5};
var dst= angular.copy(src);
  • deep copy

Extend:

var mergedObject = angular.extend(dst, src1, src2, ...) 
  • shallow copy

Merge:

var mergedObject = angular.merge(dst, src);
  • since angular 1.4+
  • deep (recursively) copy

If you want to not overwrite with null, you can use this.


Object.assign():

let movie2 = Object.assign({}, movie1, { episode: 8 });
  • fot Angular 2+ (ECMAScript 6)

Sources:

  • https://docs.angularjs.org/api/ng/function

  • http://davidcai.github.io/blog/posts/copy-vs-extend-vs-merge/