TypeScript中如何将父对象属性设为子对象对应属性的求和值
计算JSON父元素属性为子元素对应属性总和的TypeScript实现
嘿,作为JSON和TypeScript新手,别担心!这个需求其实很容易搞定,咱们一步步来实现它。
首先,为了让TypeScript更好地帮我们做类型检查,先给数据结构定义对应的接口:
// 定义子元素的类型结构 interface ChildValue { number1: number; number2: number; childId: number; } // 定义父元素的类型结构 interface ParentValue { number1: number; number2: number; parentId: number; childValues: ChildValue[]; } // 定义整个数据的顶层结构 interface Data { parentValues: ParentValue[]; }
接下来,写一个处理函数,专门用来遍历父元素数组,计算子元素属性的总和并更新父元素:
function calculateParentNumbers(data: Data): Data { // 遍历每一个父元素 data.parentValues.forEach(parent => { // 初始化两个总和变量为0 let totalNum1 = 0; let totalNum2 = 0; // 遍历当前父元素的所有子元素,累加对应属性值 parent.childValues.forEach(child => { totalNum1 += child.number1; totalNum2 += child.number2; }); // 将计算好的总和赋值给父元素的number1和number2 parent.number1 = totalNum1; parent.number2 = totalNum2; }); return data; }
现在用你提供的输入数据来测试这个函数:
// 你的输入数据(直接转成TypeScript对象) const inputData: Data = { parentValues: [{ number1: 0, number2: 0, parentId: 1, childValues: [{ number1: 10, number2: 20, childId: 1 }, { number1: 30, number2: 40, childId: 2 }] }] }; // 调用处理函数 const outputData = calculateParentNumbers(inputData); // 打印结果,和你期望的输出一致 console.log(JSON.stringify(outputData, null, 2));
运行这段代码后,你会得到和期望完全一致的输出:
parentValues:[{ "number1": 40, "number2": 60, "parentId": 1, "childValues": [{ "number1": 10, "number2": 20, "childId": 1 }, { "number1": 30, "number2": 40, "childId": 2 } ]}]
如果你的数据是从外部获取的JSON字符串,只需要先用JSON.parse()解析成对象,再断言成我们定义的Data类型即可,比如:
const jsonString = '{"parentValues":[{"number1":0,"number2":0,"parentId":1,"childValues":[{"number1":10,"number2":20,"childId":1},{"number1":30,"number2":40,"childId":2}]}]}'; const parsedData = JSON.parse(jsonString) as Data; const result = calculateParentNumbers(parsedData);
这样就完美解决你的需求啦!
内容的提问来源于stack exchange,提问作者user3205921
相关产品推荐
相关产品推荐

