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índocument.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)
});