2016-07-23 6 views
2

Я хочу, чтобы сумма имущества PieData. Мой ожидается выход 25515512+916952499 = 942468011Как суммировать значения свойств объекта?

var PieData = [ 
    { 
     value: 25515512, 
     color: "#00a65a", 
     highlight: "#00a65a", 
     label: "Received Fund"  
    }, 
    { 
     value: 916952499, 
     color: "#f56954", 
     highlight: "#f56954", 
     label: "Pending Fund" 
    } 
]; 

Вот сценарий я попробовал: Он печатает неопределенное значение.

var total_value=''; 
for(var i=0;i<PieData.length;i++){ 
    $.each(PieData[i], function (index, val) { 
     total_value += val.value; 
    }); 
} 
alert(total_value); 
+0

инициализации total_value как 0 –

+0

нет необходимости в цикле попробовать это 'уаг PieData = [{ значение: 25515512, цвет: "# 00a65a", выделить: "# 00a65a", ярлык: "Received фонд" }, { значение: 916952499, цвет: «# f5 6954 ", выделить:" # f56954 ", ярлык:" Pending Fund " }]; var sum = 0; $ .each (PieData, function (index, val) { sum + = val.value; }); console.log (sum) ' – guradio

ответ

7

Для этого вы можете использовать собственный метод Array#reduce.

var PieData = [{ value: 25515512, color: "#00a65a", highlight: "#00a65a", label: "Received Fund" }, { value: 916952499, color: "#f56954", highlight: "#f56954", label: "Pending Fund" }], 
 
    sum = PieData.reduce(function (s, a) { 
 
     return s + a.value; 
 
    }, 0); 
 

 
console.log(sum);

ES6

var PieData = [{ value: 25515512, color: "#00a65a", highlight: "#00a65a", label: "Received Fund" }, { value: 916952499, color: "#f56954", highlight: "#f56954", label: "Pending Fund" }], 
 
    sum = PieData.reduce((s, a) => s + a.value, 0); 
 

 
console.log(sum);

2

Вещи изменения:

  • Инициализировать итого, как 0, потому что + Оператор на строке объединяет значения.
  • $.each петли над переданным объектом, поэтому вы можете напрямую получить доступ к этому в обратном вызове для вычисления суммы.

Пример сниппето:

var PieData = [{ 
 
    value: 25515512, 
 
    color: "#00a65a", 
 
    highlight: "#00a65a", 
 
    label: "Received Fund" 
 

 
}, { 
 
    value: 916952499, 
 
    color: "#f56954", 
 
    highlight: "#f56954", 
 
    label: "Pending Fund" 
 
}]; 
 

 
//calculating total 
 
var total = 0; 
 
$.each(PieData, function(index, value) { 
 
    total += value.value; 
 
}) 
 
alert(total)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2

Вы можете использовать яваскрипт forEach() метода, как следующие.

var PieData = [ 
 
      { 
 
       value: 25515512, 
 
       color: "#00a65a", 
 
       highlight: "#00a65a", 
 
       label: "Received Fund" 
 

 
      }, 
 
      { 
 
       value: 916952499, 
 
       color: "#f56954", 
 
       highlight: "#f56954", 
 
       label: "Pending Fund" 
 
      } 
 
    ]; 
 

 
var sum = 0; 
 
PieData.forEach(function(item){ 
 
    sum += item.value; 
 
}) 
 

 
console.log(sum)

0

PieData представляет собой массив с 2-х элементов, причем каждый элемент хэш-таблицу. вы можете подвести их, говоря:

var sum = PieData[0]["value] + PieData[1]["value"] 

Если у вас есть несколько элементов, или просто хотите использовать цикл:

var sum=0; 
for(var i=0;i<PieData.length;i++){ 
    sum+=PieData[i]["value"]; 
} 
Смежные вопросы