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

时间:2018-05-02 10:09:10

标签: angular typescript

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

这是情景:

let obj1:Product;
left obj2:OffertRow;

实例的常见属性包括: idProduct,ProductName

有没有办法做这样的事情,以便在obj1上传递obj2属性:

obj1 = obj2

或者我总是要指定属性:

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

感谢支持

3 个答案:

答案 0 :(得分:0)

您可以使用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]
    }
  })
})

答案 1 :(得分:0)

Object.assign(obj1,obj2)就是你要找的东西。

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

编辑:抱歉,我以为你在谈论JSON对象而不是类。错误的答案!

答案 2 :(得分:0)

一个选项是创建一个公共属性的数组并迭代它。

let commonProps = ['idProduct', 'ProductName'];

commonProps.map(x => {
  obj1[x] = obj2[x]  // or use the spread operator {...obj2[x]} if you need to be more carefull
}) 

使用Object.keys的替代解决方案:

Object.keys(obj2)
  .filter(x => Object.keys(obj1).includes(x))
  .map(x => obj1[x] = obj2[x])