JavaScript如何计算对象数组中指定属性的数值总和
开发需求
计算给定对象数组中data字段对应值的累加总和,注意数组元素的data字段存储的是字符串类型数值,求和前必须做类型转换,避免出现字符串拼接的错误结果。
参考测试数据
// 待求和的目标数组 const storage = [ { data: '1', status: '0' }, { data: '2', status: '0' }, { data: '3', status: '0' }, { data: '4', status: '0' }, { data: '5', status: '0' }, { data: '6', status: '0' }, { data: '7', status: '1' }, ];
实现代码
推荐使用Array.prototype.reduce实现遍历累加,代码简洁且性能符合常规场景要求:
const sum = storage.reduce((acc, cur) => { // 将字符串类型的data转为数字类型后累加,初始累加值设为0 return acc + Number(cur.data) }, 0) console.log(sum) // 运行输出结果为28
注意事项
- 累加初始值必须传入
0,如果省略初始值,reduce会把数组第一个元素(对象类型)作为初始累加值,最终运算结果会出错 - 禁止直接对字符串类型的
data值做加法,否则会触发字符串拼接逻辑,比如'1' + '2'的运算结果是字符串'12',不是预期的数值3 - 如果业务场景中存在
data字段为空、值为非数字字符串的异常情况,可以在累加前增加校验逻辑,避免最终结果返回NaN:const sum = storage.reduce((acc, cur) => { const numVal = Number(cur.data) // 无效值直接跳过不累加 if (isNaN(numVal)) return acc return acc + numVal }, 0)
内容的提问来源于stack exchange,提问作者adn84
相关产品推荐
相关产品推荐

