【问题标题】:Pushing Object into Array then Looping Through Resulting Data Structure将对象推入数组,然后循环通过生成的数据结构
【发布时间】:2012-12-27 02:05:31
【问题描述】:
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;
} 
}

【问题讨论】:

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


    【解决方案1】:

    您需要a.priceID。那是您存储时使用的key

    不需要a,只需使用数组本身即可。另外,既然是价格,最好用float。

    代码:

    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 作为参数传递给函数?

    【讨论】:

    • priceID 在执行时传递给total函数total(priceID);。所以我想当我定义函数时,我可以有任何东西来表示这个传递的参数。例如:
    • function total(price){function total(a){ 我过去做过类似的事情。为什么 price 不代表执行函数时传递的参数 priceID?谢谢你的回复。
    • @bfavaretto 哪个var s?
    • 在 OP 代码上,aitemPricetotalPrice。在你的,itemPricetotalPrice(我会返回最后一个,而不是使用全局)。
    • 目前,total 函数位于另一个声明 priceID 的函数中。 PriceID 不是全局变量。不确定我是否需要将 total() 移到其他地方。我对如何在函数布局等方面构建 javascript 不太了解。
    猜你喜欢
    • 2015-10-18
    • 2014-11-12
    • 2015-10-21
    • 1970-01-01
    • 2021-01-06
    • 2014-10-12
    • 2016-10-14
    • 2020-11-09
    相关资源
    最近更新 更多