我有一个用例,我需要将整个对象数据复制到另一个对象而不创建内部对象。即对象内部的对象。
例如,
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/