Javascript 在typescript中连接两个对象

Javascript 在typescript中连接两个对象,javascript,arrays,typescript,dictionary,concat,Javascript,Arrays,Typescript,Dictionary,Concat,我有两个属性相同但值不同的对象 例如: export class obj1{ arr1: values[] dic1: { [key: string]: Value; }; bool1: boolean } export class obj2{ arr1: values[] dic1: { [key: string]: Value; }; bool1: boolean } 如果对象的属性是数组或字典,我希望将obj2值添加到obj1的值中。如果存在布尔\string\n

我有两个属性相同但值不同的对象

例如:

export class obj1{
  arr1: values[]
  dic1: { [key: string]: Value; };
  bool1: boolean
}
export class obj2{
  arr1: values[]
  dic1: { [key: string]: Value; };
  bool1: boolean
}
如果对象的属性是数组或字典,我希望将obj2值添加到obj1的值中。如果存在布尔\string\number属性,我希望obj2属性替换obj1


有没有一种干净的方法可以在几行内完成这项工作,或者我必须映射每个属性。

我问了一个类似的问题

基本上:

因为您的两个类具有相同的属性,所以您可以让它们扩展同一个类。然后,您可以为类本身编写一个名为“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;
  }
}
见:


如果它的阵列不可用,请尝试此操作<代码>var newobj=Object.assign(obj1,obj2)可以使用lodash并传递函数。请参见:Deckerz不幸的是,它用相同的名称替换了所有属性,它不会添加到数组和字典中。您应该给出一个真实的示例(这就是示例的目的)。您的示例包含语法错误。告诉我们你期望的结果。我不确定你是否想要/需要一个递归函数。如果我看到一个例子,我会的。这个newObj.dic1=这个.otherObj.dic1;是否用其他OBJ.dic1替换新OBJ.dic1?您将如何添加到第一个dictionary@RichardWatts是的,这就是我从你的问题中不明白的,你有没有一个例子来说明你想如何合并这两本词典?我猜您希望所有的键/值对都放在一个字典中,但是如果两个对象上的键相同怎么办?很好。这两本字典永远不会有相同的键。我确实希望将所有键\值对放在一个中dictionary@RichardWatts合并字典非常简单:添加到答案中!据我所见,该帖子中的解决方案将覆盖属性匹配的值。我希望合并,以便维护所有值