的毗连两个打字稿对象
我具有相同特性的两个对象,但保持不同的值的毗连两个打字稿对象
实施例:
export class obj1{
arr1: values[]
dic1: { [key: string]: Value; };
bool1: boolean
}
export class obj2{
arr1: values[]
dic1: { [key: string]: Value; };
bool1: boolean
}
当对象的属性是我想OBJ2值增加一个阵列或字典到obj1的值。哪里有布尔\字符串\数字属性我想要obj2属性来替换obj1
是否有干净的方式做到这一点在几行或我将不得不映射每个属性。
我问了类似的问题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?
不会这个newObj.dic1 = this.otherObj.dic1;将newObj.dic1替换为其他Obj.dic1?你会如何添加到第一个字典 –
@RichardWatts是啊,这是我不明白你的问题,你有你想如何合并这两个字典的例子吗?我猜你希望所有的键/值对都被放到一个字典中,但如果两个对象上的键是相同的呢? – mintychai
好点mintychai。这两本字典永远不会有相同的密钥。我希望键/值对全部放入一个字典 –
试试这个可能。 'var newobj = Object.assign(obj1,obj2);' – Deckerz
你可以使用lodash ['_.mergeWith'](https://lodash.com/docs/4.17.4#mergeWith)并传递你的函数。看到这个:http://jsbin.com/xugujon/edit?html,js –
Deckerz不幸的是,用相同的名称替换所有的属性,它不会添加到数组和字典 –