网站搜索

Angular/Typescript - 在两个相似对象之间快速分配对象属性的方法


我有两个非常相似的对象类,我需要知道是否有一种方法可以轻松地将 object1 的所有公共属性值分配给 object2。

情景如下:

let obj1:Product;
left obj2:OffertRow;

实例的常见属性是:idProduct, ProductName

有没有一种方法可以像这样做,以便将 obj2 的属性传递给 obj1 的一个?

obj1 = obj2

或者我总是必须指定属性:

obj1.idProduct = obj2.idProduct;
obj1.Product = obj2.Product;
.... = ...

感谢支持

答案#1

你可以使用 Object.keys()

Object.keys() 方法返回一个给定对象的属性名数组,顺序与使用普通循环获取时相同。

var obj1 = {}
var obj2 = {}
Object.keys(obj2).forEach(key2 => {
  Object.keys(obj1).forEach(key1 => {
    if (key1 === key2) {
      obj1[key1] = obj2[key1]
    }
  })
})

答案#2

Object.assign(obj1, obj2) 正是你正在寻找的。

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

编辑:抱歉,我以为你在说 JSON 对象而不是类。答案错了!