Angularjs合并了两个对象

Trt*_*rtG 34 javascript merge extends javascript-objects angularjs

例如,从这两个对象:

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

var object2 = {
  "color": "blue",
  "size": 51,
  "age": null
}
Run Code Online (Sandbox Code Playgroud)

我想要这个(object2覆盖object1除了null他没有的属性或属性):

{
  "color": "blue",
  "size": 51,
  "age": 7,
  "weight": null
}
Run Code Online (Sandbox Code Playgroud)

Ber*_*eri 62

复制

var src = { name: 'Apple', price: 5};
var dst= angular.copy(src);
Run Code Online (Sandbox Code Playgroud)
  • 深刻的副本

延伸:

var mergedObject = angular.extend(dst, src1, src2, ...) 
Run Code Online (Sandbox Code Playgroud)
  • 浅拷贝

合并:

var mergedObject = angular.merge(dst, src);
Run Code Online (Sandbox Code Playgroud)
  • 因为角度1.4+
  • 深度(递归)复制

如果您不想用null覆盖,可以使用.


Object.assign():

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

资料来源:


Raf*_*nda 18

对于较新版本(至少1.4.0)的角度,您可以使用 angular.merge

与extend()不同,merge()以递归方式下降到源对象的对象属性中,执行深层复制.