2012-04-19 14 views
7

Jak mogę podsumować elementy tablicy JSON jak ten, za pomocą jQuery:Jak podsumować json tablicę

"taxes": [ { "amount": 25, "currencyCode": "USD", "decimalPlaces": 0,"taxCode": "YRI", 
{ "amount": 25, "currencyCode": "USD", "decimalPlaces": 0,"taxCode": "YRI", 
{ "amount": 10, "currencyCode": "USD", "decimalPlaces": 0,"taxCode": "YRI",}], 

Wynik powinien być:

totalTaxes = 60

+5

10? Naprawdę? 25 + 25 + 10 = 10? A twoje JOSN nie jest ważne. – epascarello

+0

kilka niezrównanych '{' s – kev

+1

@epascarello: oczywiście nie słyszałeś o "nowej matematyce" – sberry

Odpowiedz

14

Praca z JSON 101

var foo = { 
     taxes: [ 
      { amount: 25, currencyCode: "USD", decimalPlaces: 0, taxCode: "YRI"}, 
      { amount: 25, currencyCode: "USD", decimalPlaces: 0, taxCode: "YRI"}, 
      { amount: 10, currencyCode: "USD", decimalPlaces: 0, taxCode: "YRI"} 
     ] 
    }, 
    total = 0, //set a variable that holds our total 
    taxes = foo.taxes, //reference the element in the "JSON" aka object literal we want 
    i; 
for (i = 0; i < taxes.length; i++) { //loop through the array 
    total += taxes[i].amount; //Do the math! 
} 
console.log(total); //display the result 
+4

Z wyjątkiem tego, że nie jest to JSON. [JSON] (http://en.wikipedia.org/wiki/JSON) to format tekstowy. Jest to po prostu obiekt javascript i notacja tablicowa. – jfriend00

+0

Dziękuję. Wziąłem udział w długiej odpowiedzi JSON. Przepraszam za błędy w moim pytaniu. Ale suma działa z tym. ;) – Louis

10

Jeśli musisz naprawdę musisz użyć jQu ery, można to zrobić:

var totalTaxes = 0; 

$.each(taxes, function() { 
    totalTaxes += this.amount; 
}); 

Albo można użyć funkcji ES5 reduce w przeglądarkach, które go obsługują:

totalTaxes = taxes.reduce(function (sum, tax) { 
    return sum + tax.amount; 
}, 0); 

Albo po prostu użyć pętli for jak w odpowiedzi użytkownika @ epascarello ...