簡體   English   中英

總結對象中的所有屬性

[英]Sum all properties in object

我有以下對象:

{"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"}

我想總結所有這些值並打印出來。 如何總結屬性值? :)

  1. 使用for(var in)迭代對象屬性
  2. 使用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);

這是使用 ES5 的Object.keysreduce的一種方法:

 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

js小提琴

我的 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)
}));

http://plnkr.co/edit/UQs1aTCJ8qe1kG15G4x7?p=preview

你可以這樣做:

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; 重要 id 值不是數字

使用 Lodash:

var obj = {"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"};

var val = _.sumBy(_.values(obj), function(v) {
   return parseInt(v)
});

示例: https : //codepen.io/dieterich/pen/dyymoxM?editors=0012

var sum = 0;
for(var key in objects) {
    sum += parseInt(objects[key]);
}
console.log(sum);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM