Javascript 对对象中的所有属性求和

Javascript 对对象中的所有属性求和,javascript,arrays,Javascript,Arrays,我的目标如下: {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"} 我想把所有这些值相加并打印出来。如何对属性值求和?:) 使用for(var in) 使用parseInt,因为有些整数是字符串形式的 var obj={“速度”:299,“设备”:49,“电信ABB”:49,“附加”:50,“可选”:“299”}; var总和=0; for(obj中的var键){ sum+=parseInt(o

我的目标如下:

{"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"}
我想把所有这些值相加并打印出来。如何对属性值求和?:)

  • 使用
    for(var in)
  • 使用
    parseInt
    ,因为有些整数是字符串形式的
  • var obj={“速度”:299,“设备”:49,“电信ABB”:49,“附加”:50,“可选”:“299”};
    var总和=0;
    for(obj中的var键){
    sum+=parseInt(obj[key]);
    }
    
    文件。填写(金额)您可以这样做:

    var sum_object = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
    var sum = 0;
    
    for( var index in sum_object ){
        sum += parseInt(sum_object[index]);
        console.log("Val: ",sum_object[index], sum);
    };
    
    console.log(sum);
    
    JSIDLE:

    我的版本较少:

    var obj={“速度”:299,“设备”:49,“电信ABB”:49,“附加”:50,“可选”:“299”};
    函数属性(obj){
    返回Object.getOwnPropertyNames(obj)
    .map(函数(项){return+obj[item];})
    .reduce(函数(acc,项){返回acc+项;});
    }
    
    文件编写(sumProperties(obj))以下是一种使用ES5和:

    var obj={“速度”:299,“设备”:49,“电信ABB”:49,“附加”:50,“可选”:“299”};
    var sum=Object.keys(obj).reduce(函数(prev、current、index){
    返回上一个+(+obj[当前]);
    }, 0);
    console.log(总和);//746
    parseInt(obj[key])|0是重要id值不是给定的数字

    var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional": 299}
    
    使用该库,您可以非常轻松地执行此操作:

    如果某些值不是数字,则需要首先将它们映射到数字:

    var result = _.sum(_.map(obj, function(n){
         return +n;
         //or parseInt(n) or parseInt(n,10)
    }));
    
    使用Lodash:

    var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
    
    var val = _.sumBy(_.values(obj), function(v) {
       return parseInt(v)
    });
    

    示例:

    最好不要使用document.write,使用函数,然后添加hasOwnProperty@RaúlMartín
    document.write
    是在代码片段中显示结果的一种简单方法。使用函数是提问者的工作。最后,考虑到上面的代码,为什么
    hasOwnProperty
    ?它会做什么?无论您在obj中使用key,您都会使用hasOwnProperty,您不知道对象的原点。您需要信任您的代码,以便将来重用它。@RaúlMartín,但在这种情况下,我们确实知道对象的来源。这是OP代码中的一个。此外,在我的回答中,我用
    var obj=
    明确声明了它。这是其他6个类似答案的一个很好的选择^1@AmmarCSE谢谢我认为这是一个需要解决的有趣问题,我想其他人也是如此!为什么不呢?Object.keys(obj).reduce(function(previous,key){return previous+(parseInt(obj[key]| | 0))},0)@RaúlMartín True将保存三元数。更新的回答没有看到这个。美好的我在lodash 4.17.10中也尝试了同样的方法,结果是零?这是一个版本问题吗
    var result = _.sum(obj);
    
    var result = _.sum(_.map(obj, function(n){
         return +n;
         //or parseInt(n) or parseInt(n,10)
    }));
    
    var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
    
    var val = _.sumBy(_.values(obj), function(v) {
       return parseInt(v)
    });