总结数组中的值 - Javascript

时间:2015-07-19 05:18:44

标签: javascript arrays

我有一个有25个插槽的阵列,每个插槽都填满了相应按钮的点击。我总结了数组值的问题。我试过了

for(var k = 0; k < price.length; k++)
{
    totalPrice += price[k] << 0;
}

但这似乎只是将价格附加到上一次输出的末尾而不是加在一起。

我目前的代码是:

$("#sumArray").click(function()
{       
    a++;
    price[0] = 8.45 * a;
    alert(price[0]);
    for(var k = 0; k < price.length; k++)
    {
        totalPrice += price[k] << 0;
    }
    alert(totalPrice);
    for(var i = 0; i < 27; i++)
    {
        $("#priceHere"+i+"").append("<b>"+totalPrice+"</b>");
    }
    //$.mobile.changePage("#mainMenu1");
});

所有其他数组索引都会被其他单击函数填充。

编辑:删除所有与问题无关的代码,以便更轻松地阅读。 价格数组索引可以根据单击某个按钮的次数而改变。

4 个答案:

答案 0 :(得分:2)

对于现代浏览者(IE 9+和其他任何东西)

total = price.reduce(function (prev,curr) {
   return prev + curr;
}, 0);

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

答案 1 :(得分:1)

在计算之前添加:

totalPrice = 0;

如果您没有重置该值,它只会不断添加到上一个输出。

由于问题不断被编辑:

$("#priceHere"+i+"").append("<b>"+totalPrice+"</b>");

是,它说的是什么。它将总价格附加到元素。 如果要完全覆盖该值,可以执行以下操作:

$("#priceHere"+i+"").html("<b>"+totalPrice+"</b>");

答案 2 :(得分:0)

根据您的问题,您只需要这个

price = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5]
totalPrice = 0
for(var k = 0; k < price.length; k++) {totalPrice += price[k];}
// gives 105
  

但这似乎只是将价格追加到前一个末尾   输出而不是加在一起。

将其设为零:

totalPrice = 0

答案 3 :(得分:0)

您在哪里声明pricetotalPrice

这是一个对数组值进行求和的示例:

var price = [1, 2, 3, 4, 5], // example array of prices
    totalPrice = 0, // initialize to 0 so totalPrice is a number
    k; // counter that you'll use in the loop

for (k = 0; k < price.length; k++) {
  totalPrice += price[k];
}

console.log(totalPrice); // 15

请注意,JavaScript使用+运算符进行加法和字符串连接。听起来可能发生的事情是,totalPrice已被设置为字符串(或type coerced成为一个字符串),因此,当您想要添加到某个数字时,您可以“实际上是连接一个字符串。

这是一个看起来像的例子。请注意,除了为totalPrice分配字符串(而不是数字)外,所有代码都是相同的:

var price = [1, 2, 3, 4, 5], // example array of prices
    totalPrice = '0', // initialized as the string '0'
    k; // counter that you'll use in the loop

for (k = 0; k < price.length; k++) {
  totalPrice += price[k];
}

console.log(totalPrice); // '012345'