2016-06-12 122 views
0

我需要從一個數組中的幾個對象中總結一個關鍵「數字」的所有值。什麼是正確的方法來做到這一點?這是我試過的。如何從javascript中的對象數組中獲取鍵的值的總和?

var numarray = [{"number":"10"},{"number":"2"},{"number":"5"}, 
{"number":"3"},{"number":"21"},{"number":"43"},{"number":"30"}]; 

function Sum() { 
    var sum; 

    for (number in numarray[i]){ 
    alert(sum); //sum would be the result I need to get 
    } 
} 
+0

在問一個新問題之前,請使用搜索(['[javascript] sum properties'](http://stackoverflow.com/search?q=%5Bjavascript%5D+sum+properties))。有很多類似的問題可以幫助你。 –

回答

3

使用forEach循環瀏覽每個json對象。

使用​​將值轉換爲整數

var numarray = [ 
{"number":"10"}, 
{"number":"2"}, 
{"number":"5"}, 
{"number":"3"}, 
{"number":"21"}, 
{"number":"43"}, 
{"number":"30"}]; 

function Sum(){ 
var sum=0; 

numarray.forEach(function(item){ 
sum += parseInt(item.number) 
}) 
document.write('<pre>'+sum+'</pre>') 
} 
Sum() 

DEMO

編輯

當使用parseInt函數最好是指定基數

parseInt(item.number,10) 

使用10基數意味着數字解析用鹼10,因此圈數成。如果parseInt整數檢測前導零它將解析在八進制基

數量使用數量

Number(item.number) 

它不會檢測到任何任意八進制

+0

在這種情況下,「item」會是什麼?對象的價值? – Gonzalo

+0

指定'parseInt'的基數。 –

+0

爲什麼使用'parseInt'而不是'Number'? –

2

您可以使用reduce此:

下面是你通常會發現元素的總和在一個陣列:

var sum = arr.reduce(function(a,b) { 
    return a + b; 
}); 

既然你有對象的數組,你需要這種更改爲類似:

var sum = arr.reduce(function(a,b) { 
    return parseFloat(a) + parseFloat(b.number); 
}, 0); 

通知的0我添加了添加作爲參數?這是默認參數,在這種情況下是必需的。

相關問題