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

标签 javascript node.js

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

例如,

obj_1 = {
       "_id": "SPool",
       "w1": 60,
       "w2": 150
     }

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

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

obj_1 = {
       "_id": "SPool",
       "w1": 60,
       "w2": 150,
       "obj_2" : {
                   "w1": 30,
                   "w2": 120
                 }
       "diff": {
                 "w1": 30,
                 "w2": 30
               }
     }

可以这样做吗?

最佳答案

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

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"));

关于javascript - 如何在javascript中将一个对象的数据复制到另一个对象并执行两个对象值的减法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148149/

相关文章:

javascript - 固定位置侧边栏不适应不同的分辨率

javascript - 三.js虚线圆

javascript - 使用nodejs获取evernote的提醒

node.js - SailsJS v0.10 多关联查找模型

javascript - 如何在 NodeJS 中制作一个简单的网络爬虫?

javascript - OpenSuse 上 node.js 0.6.6 的 SetDebugMessageDispatchHandler 错误

javascript - 如何将 Enzyme Shallow 与 Jest 快照一起使用

javascript - 停止使用 PHP 和 jQuery 打印内容

javascript - 将 PDF 页面解析为 javascript 图像

javascript - 如何验证我所有的 (JavaScript) AJAX 请求? (发送到 Node.js)