我有两个具有相同属性但保持不同值的对象
实施例
export class obj1{
arr1: values[]
dic1: { [key: string]: Value; };
bool1: boolean
}
export class obj2{
arr1: values[]
dic1: { [key: string]: Value; };
bool1: boolean
}
如果对象的属性是数组或字典,我希望obj2值添加到obj1的值。如果有boolean \ string \ number属性,我希望obj2属性替换obj1
是否有一种干净的方法可以在几行中完成此操作,或者我是否必须映射每个属性。
答案 0 :(得分:1)
我问了一个类似的问题here。
基本上:
由于您的两个类具有相同的属性,因此您可以让它们扩展相同的类。然后,您可以为类本身编写一个名为“merge()”的方法,或者手动映射属性的方法,这实际上看起来并不复杂。
修改强>
类似于此的内容,但您可能仍需要针对您的用例使用单独的类。 编辑:为合并词典添加了逻辑。
export class obj {
arr1: values[]
dic1: { [key: string]: Value; };
bool1: boolean
merge(otherObj : obj) {
let newObj:obj;
newObj.arr1 = this.arr1.concat(otherObj.arr1);
newObj.dic1 = {};
newObj.dic1 = Object.assign(newObj.dic1, this.dic1);
newObj.dic1 = Object.assign(newObj.dic1, otherObj.dic1);
newObj.bool1 = this.otherObj.bool1;
return newObj;
}
}
请参阅:
How can I merge properties of two JavaScript objects dynamically?