如何对键名不同、值为字符串类型的JSON对象的所有值进行求和
JS实现对象字符串类型数值求和
你可以用以下两种常用方案实现,都能兼容大部分业务场景:
方案1:ES6+ 简洁写法(推荐)
直接通过Object.values配合reduce完成遍历累加,代码量最小:
const a = { a: "0", b: "2", c: "3" }; // 遍历所有值累加,初始值设为0避免空对象报错 const result = Object.values(a).reduce((sum, currentVal) => sum + Number(currentVal), 0); console.log(result); // 输出 5
逻辑说明:
Object.values(a)会提取对象所有值组成数组,这里得到["0", "2", "3"]reduce方法遍历数组,把每一项转成数字后累加到总和sum上- 初始值设为0,就算对象为空也不会返回
NaN
方案2:ES5 兼容写法
如果需要兼容低版本浏览器,可以用for in遍历实现:
var a = { a: "0", b: "2", c: "3" }; var result = 0; for (var key in a) { // 加hasOwnProperty判断,避免遍历到原型链上的额外属性 if (a.hasOwnProperty(key)) { result += Number(a[key]); } } console.log(result); // 输出5
注意:题目已明确所有值都是可转数字的字符串,如果实际场景存在非数字格式的字符串,可以额外加
isNaN判断过滤异常值,避免求和结果为NaN。
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

