【发布时间】:2026-02-23 05:00:02
【问题描述】:
我有以下对象:
{"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"}
我想将所有这些值相加并打印出来。如何对属性值求和? :)
【问题讨论】:
标签: javascript arrays
我有以下对象:
{"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"}
我想将所有这些值相加并打印出来。如何对属性值求和? :)
【问题讨论】:
标签: javascript arrays
for(var in) 遍历对象属性
parseInt,因为一些整数是字符串形式var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
var sum = 0;
for(var key in obj){
sum += parseInt(obj[key]);
}
document.write(sum);
【讨论】:
document.write 是一种在代码 sn-p 中显示结果的简单方法。使用函数是提问者的工作。最后,为什么hasOwnProperty 给出了上面的代码?它会做什么?
var obj = 明确声明了它
这是一种使用 ES5 的 Object.keys 和 reduce 的方法:
var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
var sum = Object.keys(obj).reduce(function(prev, current, index) {
return prev + (+obj[current]);
}, 0);
console.log(sum); // 746
【讨论】:
我的 for-less 版本:
var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
function sumProperties(obj) {
return Object.getOwnPropertyNames(obj)
.map(function(item){ return +obj[item];})
.reduce(function(acc,item) { return acc + item; });
}
document.write(sumProperties(obj));
【讨论】:
给定
var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional": 299}
您可以使用 lodash 库非常轻松地做到这一点:
var result = _.sum(obj);
如果您的某些值不是数字,则需要先将它们映射到数字:
var result = _.sum(_.map(obj, function(n){
return +n;
//or parseInt(n) or parseInt(n,10)
}));
【讨论】:
你可以这样做:
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);
JSFiddle:http://jsfiddle.net/abvuh5m0/
【讨论】:
var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
function sum(obj){
var sum = 0;
for(var key in obj){
if (obj. hasOwnProperty(key)) {
sum += parseInt(obj[key]) || 0;
}
}
return sum
}
console.log(sum(obj));
parseInt(obj[key]) || 0; 很重要,值不是数字
【讨论】:
使用 Lodash:
var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};
var val = _.sumBy(_.values(obj), function(v) {
return parseInt(v)
});
【讨论】:
var sum = 0;
for(var key in objects) {
sum += parseInt(objects[key]);
}
console.log(sum);
【讨论】: