首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中将一个对象的数据复制到另一个对象,并对两个对象的值进行减法?

如何在javascript中将一个对象的数据复制到另一个对象,并对两个对象的值进行减法?
EN

Stack Overflow用户
提问于 2020-02-10 18:14:10
回答 1查看 51关注 0票数 1

我有一个用例,在这个用例中,我需要将整个对象数据复制到另一个对象,而不创建内部对象。即对象内部的对象。

例如,

代码语言:javascript
复制
obj_1 = {
       "_id": "SPool",
       "w1": 60,
       "w2": 150
     }

obj_2 = {
        "_id": "SPool",
        "w1": 30,
        "w2": 120
      }

由于两个对象都有相同的_id字段,我想将obj-2的数据复制到obj-1中,并想找出这两个对象之间的差异,如下所示。

代码语言:javascript
复制
obj_1 = {
       "_id": "SPool",
       "w1": 60,
       "w2": 150,
       "obj_2" : {
                   "w1": 30,
                   "w2": 120
                 }
       "diff": {
                 "w1": 30,
                 "w2": 30
               }
     }

有可能这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-10 18:44:02

您应该能够使用Array.reduce、Object.entries等从“父”对象创建新的合并对象。

代码语言:javascript
复制
obj_1 = {
       "_id": "SPool",
       "w1": 60,
       "w2": 150
     }

obj_2 = {
        "_id": "SPool",
        "w1": 30,
        "w2": 120
      }
      
 function mergeObjects(obj_1, obj_2, propertyName) {
     let merged = { ...obj_1 };
     merged[propertyName] = obj_2;
     merged.diff = Object.entries(obj_1).reduce((acc, [key, value]) => { 
         if (obj_2[key] && typeof obj_2[key] === "number") { 
             acc[key] = value - obj_2[key];
         }
         return acc;
     }, {});
     return merged;
 }
 

 console.log("Merged objects:", mergeObjects(obj_1, obj_2, "obj_2"));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60148149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档