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変数は 2 番目の価格である 50 しか格納していないのですか? 演算子は?+=と同じでなければなりません。totalPrice = totalPrice + itemPrice理解を深めるために、説明と修正をいただければ幸いです。

4

2 に答える 2

2

初めてループに入るときはtotalPrice0に設定します。次に最初のアイテムの価格を追加するので、totalPriceは25になります。次にループに入るときにtotalPriceもう一度0に設定し、0 + 50=50にします。

totalPriceループの前に初期化する必要があります。

于 2013-01-12T03:30:17.647 に答える
0

使用削減:

basket.reduce( function( previousValue, currentValue ){
           return previousValue += parseInt(currentValue.price) 
 }, 0);

例: http: //jsfiddle.net/ysJS8/

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/Reduce

于 2013-01-12T03:53:21.943 に答える