Por ejemplo, de estos dos objetos:
var object1 = { "color": "yellow", "size": null, "age": 7, "weight": null } var object2 = { "color": "blue", "size": 51, "age": null } Quiero esto ( object2 anula object1 excepto por propiedades null o propiedades que no tiene):
{ "color": "blue", "size": 51, "age": 7, "weight": null } var src = { name: 'Apple', price: 5}; var dst= angular.copy(src);extender :
var mergedObject = angular.extend(dst, src1, src2, ...)Fusionar :
var mergedObject = angular.merge(dst, src);Si no desea sobrescribir con nulo, puede usar este .
let movie2 = Object.assign({}, movie1, { episode: 8 });Fuentes:
Para versiones más nuevas (al menos 1.4.0) de angular, puede usar angular.merge
A diferencia de extend(), merge() desciende recursivamente a las propiedades de los objetos de origen, realizando una copia profunda.
Usar anualr.extend no producirá el resultado solicitado. El valor nulo de object2.age anulará el valor de object1.age.
angular.extend(objeto1, objeto2) producirá el siguiente resultado:
{ "color" : "blue", "size" : 51, "age" : null, <=== undesirable result "weight" : null }Use el siguiente código para omitir las propiedades nulas
for (var prop in object1) { if(object1.hasOwnProperty(prop) && object2.hasOwnProperty(prop) && object2[prop]!=null) { object1[prop] = object2[prop]; } }Esto producirá el siguiente resultado solicitado
{ "color" : "blue", "size" : 51, "age" : 7, "weight" : null }