Par exemple, à partir de ces deux objets:
var object1 = {
"color": "yellow",
"size": null,
"age": 7,
"weight": null
}
var object2 = {
"color": "blue",
"size": 51,
"age": null
}
Je veux ceci (object2
remplace object1
sauf null
propriétés ou propriétés qu’il n’a pas):
{
"color": "blue",
"size": 51,
"age": 7,
"weight": null
}
var src = { name: 'Apple', price: 5};
var dst= angular.copy(src);
var mergedObject = angular.extend(dst, src1, src2, ...)
var mergedObject = angular.merge(dst, src);
Si vous ne voulez pas écraser avec null, vous pouvez utiliser this .
let movie2 = Object.assign({}, movie1, { episode: 8 });
Sources:
Pour les versions plus récentes (au moins 1.4.0) de angular, vous pouvez utiliser angular.merge
Contrairement à extend (), merge () descend récursivement dans les propriétés d'objet des objets source, en effectuant une copie complète.
L'utilisation de angualr.extend ne produira pas le résultat demandé. La valeur null object2.age remplacera la valeur object1.age.
angular.extend (object1, object2) produira le résultat suivant:
{
"color" : "blue",
"size" : 51,
"age" : null, <=== undesirable result
"weight" : null
}
Utilisez le code suivant pour ignorer les propriétés null
for (var prop in object1) {
if(object1.hasOwnProperty(prop) && object2.hasOwnProperty(prop) && object2[prop]!=null) {
object1[prop] = object2[prop];
}
}
Cela produira le résultat demandé suivant
{
"color" : "blue",
"size" : 51,
"age" : 7,
"weight" : null
}