【问题标题】:How to merge two Javascript objects and ignore properties which are in destination?如何合并两个 Javascript 对象并忽略目标中的属性?
【发布时间】:2020-07-05 17:58:13
【问题描述】:

如果我有两个对象,如果源中也存在相同的属性,如何合并它们并保留目标中的属性值?对象的结构可以不同。最好使用 Angular JS 或 Underscore。 Lodash 无法使用。

例子:

obj1 = {"id": 1, "name": "john"}
obj2 = {"id": "2", "zip": "72623", "city": "London"}. //note id here is a string value where id in obj1 is a number

合并后,我希望 obj1 成为 {"id": 1, "name": "john", "zip":"72623", "city": "London"}

我试过了:obj1 = angular.merge({}, obj1, obj2) 但 id 是“2”。

【问题讨论】:

  • 你试过传播运算符吗?看看这篇文章 - medium.com/@mwalterspieler_31762/…
  • 使用Object.keys(obj2).forEach(key => ...) 遍历obj2 并编写您自己的代码来检查您是要附加还是跳过该属性。
  • 把 obj2 放在 obj1之前?

标签: javascript angularjs typescript underscore.js


【解决方案1】:

你可以使用 Object.assign() ...

例如:

obj1 = {"id": 1, "name": "john"}
obj2 = {"id": "2", "zip": "72623", "city": "London"}

const ob3 = Object.assign(obj1,obj2) 
//you get 
//{id: "2"
//name: "john"
//zip: "72623"
//city: "London"}

如果你这样做了

 const ob3 = Object.assign(obj2,obj1);

 // {id: 1
 //zip: "72623"
// city: "London"
// name: "john"
//}

或使用扩展运算符

const obj3 = {...obj1,...obj2}

或相反

 const obj3 = {...obj2,...obj1}

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 2020-07-23
    • 2017-11-28
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多