2013-01-12 107 views
1

我試圖循環訪問數組中的對象,並使用鍵「價格」添加所有值。循環遍歷數組中的對象,總共取整數值

var basket = [ 
    { 
     price: "25.00", 
     id: "Hat" 
    }, { 
     price: "50.00", 
     id: "Jacket" 
    } 
] 

/*objects within array. purpose = able to use a for loop using .length as follows*/ 

function test() { 
    for(var i = 0; i < basket.length; i++){ 
     totalPrice = 0; 
     alert(itemPrice); 
     itemNum = basket[i]; 
     itemPrice = parseFloat(itemNum.price); 
     totalPrice += itemPrice; 
    } 
    alert(totalPrice); 
} 

itemPrice警報顯示,遍歷兩個對象中運行,閃爍25然後50.爲什麼我的totalPrice變量只能存儲第二價格,50?運營商+=應與totalPrice = totalPrice + itemPrice相同?任何解釋以及修復將非常感謝,試圖獲得一個良好的理解!

+4

因爲你在迴路設置totalPrice爲0。你應該在循環之前做。 –

+1

或者你可以使用['Array.reduce()'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/Reduce):'var totalPrice = basket.reduce (function(pr,cur){return pr + parseFloat(cur.price);},0);'(demo:http://jsfiddle.net/XqU5P/) – NullUserException

回答

2

您第一次進入循環時,您將totalPrice設置爲0.然後添加第一個物品價格,所以totalPrice爲25.然後第二次輸入循環,再次將totalPrice設置爲0,0 + 50 = 50.

您應該在循環之前初始化totalPrice

+0

謝謝。哈,我應該發現那個! – DVCITIS