将对象推入数组然后通过生成的数据结构循环

时间:2013-01-12 17:37:45

标签: javascript arrays object for-loop parameter-passing

var cartTotal = [];
var priceValue = x;
var priceID = y;

定义上面的空数组后,我有一个包含以下内容的循环:

cartObj = {};
cartObj.priceID = priceValue;
cartTotal.push(cartObj);
total(priceID);

在循环上面的代码几次后,生成的cartTotal数组将如下所示:

cartTotal = [{priceID:priceValue},{priceID:priceValue}]       ?

我问的原因是因为我试图将 priceID 传递给下面的总函数,以便汇总所有priceValue数字。为什么在总函数中, a.price 未定义? cartTotal.length警告表明我有一个包含大量值的数组,因此可以在函数中识别数组。

function total(price){
alert(cartTotal.length);
totalPrice = 0;
for(var i=0;i<cartTotal.length; i++){
a = cartTotal[i];
itemPrice = parseInt(a.price);
totalPrice += itemPrice;
} 
}

1 个答案:

答案 0 :(得分:1)

您需要a.priceID。这是您使用的key

不需要a,只需使用数组本身。另外,因为它是一个价格,所以最好使用浮动。

代码:

function total(price){
    alert(cartTotal.length);
    totalPrice = 0;
    var itemPrice;

    for(var i=0; i<cartTotal.length; i++){
        itemPrice = parseFloat(carTotal[i].priceID).toFixed(2);
        totalPrice += itemPrice;
    } 
}

问题:为什么要将price作为参数传递给函数?