我有一个用例,在这个用例中,我需要将整个对象数据复制到另一个对象,而不创建内部对象。即对象内部的对象。
例如,
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
}
}有可能这样做吗?
发布于 2020-02-10 18:44:02
您应该能够使用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"));
https://stackoverflow.com/questions/60148149
复制相似问题