Angular / Typescript - быстрый способ назначить свойства объекта между двумя похожими объектами - PullRequest
0 голосов
/ 02 мая 2018

У меня есть два класса объектов, которые очень похожи, и мне нужно знать, есть ли способ легко назначить все общие значения свойств от object1 до object2.

Это сценарий:

let obj1:Product;
left obj2:OffertRow;

Общие свойства для экземпляров: idProduct, ProductName

Есть ли способ сделать что-то подобное, чтобы передать свойства obj2 в obj1 one:

obj1 = obj2

Или я всегда должен указывать свойства:

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

Благодаря поддержке

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Object.assign (obj1, obj2) - это то, что вы ищете.

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

РЕДАКТИРОВАТЬ: извините, я думал, вы говорите об объектах JSON, а не классы. Неправильный ответ!

0 голосов
/ 02 мая 2018

Можно создать массив общих свойств и выполнить итерации по нему.

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])
0 голосов
/ 02 мая 2018

Вы можете использовать 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]
    }
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...