我有一个有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");
});
所有其他数组索引都会被其他单击函数填充。
编辑:删除所有与问题无关的代码,以便更轻松地阅读。 价格数组索引可以根据单击某个按钮的次数而改变。
答案 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)
您在哪里声明price
和totalPrice
?
这是一个对数组值进行求和的示例:
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'