У меня есть следующий объект:Sum все свойства в объекте
{"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"}
Я хочу просуммировать все эти значения и распечатать его. Как я могу суммировать значения свойств? :)
У меня есть следующий объект:Sum все свойства в объекте
{"speed":299,"equipment":49,"teleabb":49,"additional":50,"optional":"299"}
Я хочу просуммировать все эти значения и распечатать его. Как я могу суммировать значения свойств? :)
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);
var sum = 0;
for(var key in objects) {
sum += parseInt(objects[key]);
}
console.log(sum);
Вы можете сделать это следующим образом:
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/
My для менее версии:
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));
Не видел этого. Ницца! – AmmarCSE
Вот способ сделать это с помощью 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
Это хорошая альтернатива другим 6 подобным ответам!^1 – AmmarCSE
@AmmarCSE Спасибо. Я думал, что это была интересная проблема для решения, я думаю, что и все остальные! – CodingIntrigue
Почему бы и нет? Object.keys (объект) .reduce (функция (предыдущий, ключ) { возвращение предыдущего + (ParseInt (OBJ [ключ] || 0)); }, 0) –
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;
важно идентификатор значение не является числом
Учитывая
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)
}));
Хороший способ решить. –
Улучшенный идентификатор, который вы не используете document.write, используйте функцию, и вы добавляете hasOwnProperty –
@ RaúlMartín 'document.write' - это простой способ отобразить результат в фрагменте кода. Использование функции - это задача задающего вопрос. И, наконец, почему 'hasOwnProperty' предоставил код выше? Что бы он сделал? – CodingIntrigue