如何修改代码实现动态属性名的数组元素求和并追加结果?
适配动态属性名的数组求和追加实现
原有代码仅能处理固定属性名P2的对象数组,当每个对象的属性名不固定(如场景1的P1/P2/P3、场景2的P2/Total)时,需要调整代码以动态识别属性名。
解决思路
核心是动态获取每个对象的属性名:由于每个对象仅包含一个键值对,可通过Object.keys()提取当前对象的唯一属性名,再基于该属性名完成数组求和与结果追加操作。
调整后的完整代码
// 可替换为场景1或场景2的input数据 let input = [ { "P1": [ 6, 6, 0 ] }, { "P2": [ 3, 2, 0 ] }, { "P3": [ 5, 1, 0 ] }, ]; input.forEach(arrayItem => { // 获取当前对象的唯一属性名 const propName = Object.keys(arrayItem)[0]; // 计算数组元素的总和 const sum = arrayItem[propName].reduce((partialSum, a) => partialSum + a, 0); // 将总和追加到数组末尾 arrayItem[propName].push(sum); }); console.log(input);
效果验证
- 场景1执行后输出:
[ { "P1": [ 6, 6, 0, 12 ] }, { "P2": [ 3, 2, 0, 5 ] }, { "P3": [ 5, 1, 0, 6 ] }, ]
- 场景2执行后输出:
[ { "P2": [ 3, 3, 3, 2, 11 ] }, { "P2": [ 7, 7, 7, 4, 25 ] }, { "Total": [ 5, 1, 4, 6, 16 ] }, ]
内容的提问来源于stack exchange,提问作者Aren Trot
相关产品推荐
相关产品推荐

