如何在TypeScript中对嵌套对象求和并生成新对象
合并结构一致的对象,对应子键数值相加
给定两个结构完全匹配的对象 Set_1 和 Set_2,二者都包含 Key_1、Key_2 键,且这两个键下的子键也完全相同。需要将两个对象中对应位置的子键数值相加,生成新对象 Set_3。
原对象示例:
const Set_1 = { "Key_1": { "Sub_Key_1": 110, "Sub_Key_2": 72, "Sub_Key_3": 182 }, "Key_2": { "Sub_Key_1": 110, "Sub_Key_2": 72, "Sub_Key_3": 182 } }; const Set_2 = { "Key_1": { "Sub_Key_1": 50, "Sub_Key_2": 72, "Sub_Key_3": 112 }, "Key_2": { "Sub_Key_1": 30, "Sub_Key_2": 40, "Sub_Key_3": 70 } };
期望输出对象:
const Set_3 = { "Key_1": { "Sub_Key_1": 160, "Sub_Key_2": 144, "Sub_Key_3": 304 }, "Key_2": { "Sub_Key_1": 140, "Sub_Key_2": 112, "Sub_Key_3": 252 } };
实现方案(JavaScript):
通过逐层遍历对象键,累加对应位置的数值即可实现需求:
function mergeAndSum(obj1, obj2) { const result = {}; // 遍历外层键(Key_1、Key_2) for (const key of Object.keys(obj1)) { result[key] = {}; // 遍历子键并累加数值 for (const subKey of Object.keys(obj1[key])) { result[key][subKey] = obj1[key][subKey] + obj2[key][subKey]; } } return { Set_3: result }; } // 调用函数生成结果 const result = mergeAndSum(Set_1, Set_2); console.log(result.Set_3);
说明:
- 先创建空对象存储结果,再遍历外层键为每个键初始化子对象。
- 遍历子键时,直接将两个对象对应子键的数值相加,赋值给结果对象的对应位置。
- 该逻辑适用于任意层级结构一致的对象,只要键匹配就能完成累加。
内容的提问来源于stack exchange,提问作者Abhishek Mishra
相关产品推荐
相关产品推荐

