Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

230
Views
How to merge objects?

For instance, from these two objects :

var object1 = {
  "color": "yellow",
  "size": null,
  "age": 7,
  "weight": null
}

var object2 = {
  "color": "blue",
  "size": 51,
  "age": null
}

I want this (object2 overrides object1 except for null properties or properties he doesn't have):

{
  "color": "blue",
  "size": 51,
  "age": 7,
  "weight": null
}
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

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/

over 4 years ago · Santiago Trujillo Report

0

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.

over 4 years ago · Santiago Trujillo Report

0

Using angualr.extend will not produce the result requested. The object2.age null value will override object1.age value.

angular.extend(object1, object2) will produce the following result:

{
    "color" : "blue", 
    "size" : 51, 
    "age" : null,   <=== undesirable result
    "weight" : null
}

Use the following code to skip over null properties

for (var prop in object1) {
    if(object1.hasOwnProperty(prop) && object2.hasOwnProperty(prop) && object2[prop]!=null) {
        object1[prop] = object2[prop];
    }
}

This will produce the following requested result

{
    "color" : "blue", 
    "size" : 51, 
    "age" : 7, 
    "weight" : null
}
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!