我有两个非常相似的对象类,我需要知道是否有一种方法可以轻松地将所有公共属性值从object1分配给object2。
这是情景:
let obj1:Product;
left obj2:OffertRow;
实例的常见属性包括: idProduct,ProductName
有没有办法做这样的事情,以便在obj1上传递obj2属性:
obj1 = obj2
或者我总是要指定属性:
obj1.idProduct = obj2.idProduct;
obj1.Product = obj2.Product;
.... = ...
感谢支持
答案 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])