在打字稿中连接两个对象[重复]
Posted
技术标签:
【中文标题】在打字稿中连接两个对象[重复]【英文标题】:Concat two objects in typescript [duplicate] 【发布时间】:2018-01-26 02:15:56 【问题描述】:我有两个属性相同但值不同的对象
示例:
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
有没有一种简洁的方法可以在几行内完成,或者我必须映射每个属性。
【问题讨论】:
如果它的数组试试这个。var newobj = Object.assign(obj1, obj2);
您可以使用 lodash _.mergeWith
并传递您的函数。看到这个:jsbin.com/xugujon/edit?html,js
Deckerz 不幸的是,它替换了所有具有相同名称的属性,它不会添加到数组和字典中
你应该举一个真实的例子(这就是例子的用途)。您的示例包含语法错误。并告诉我们您期望的结果。我不确定您是否想要/需要递归函数。如果我看到一个例子,我会的。
【参考方案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?
【讨论】:
这不是 newObj.dic1 = this.otherObj.dic1;用 otherObj.dic1 替换 newObj.dic1?您将如何添加到第一本字典中 @RichardWatts 是的,这就是我从你的问题中不明白的地方,你有一个你希望如何合并这两个字典的例子吗?我猜您希望所有键/值对都放入一个字典中,但是如果两个对象上的键相同怎么办? 好点mintychai。这两个字典永远不会有相同的键。我确实希望将键\值对全部放入一个字典中 @RichardWatts 合并字典非常简单:***.com/questions/171251/… 已添加到答案中! 据我所知,该帖子中的解决方案将覆盖属性匹配的值。我想合并,所以我维护所有值以上是关于在打字稿中连接两个对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章