[英]Add multiple numbers to Array
我有两个数组。 它们看起来像这样:
array price = 14.60, 39.00
和
array quantity = 10, 5
(数量为项目的用户想购买的数量-从10项productA
和5 productB
)
现在我想通过变量循环来将价格乘以数量。
喜欢 :
14,60 * 10
和
39,00 * 5
并将两个结果添加到endPrice
变量。
我得到这样的数量数组:
$('.quantity').change(function () {
quantitys = $('input[type=number]').map(function () {
return $(this).val();
}).get();
});
和这样的不同价格:
var prices = $('.priceCell').map(function () {
return parseFloat($(this).html().trim());
}).get();
这就是我尝试过的:
var endPrice = 0;
for (var q = 0; q < quantitys.length; q++) {
for (var p = 0; p < prices.length; p++) {
endPrice = quantitys[q] * prices[p];
}
}
alert(endPrice);
嗯,这对我来说并没有那么好用。 有人可以帮助我吗? 如果解决方案是纯JavaScript或jQuery无关紧要。
您使用两个循环,而您应该只使用一个循环。 另外,使用+=
添加到endPrice
:
var endPrice = 0;
for (var q = 0; q < quantitys.length; q++) {
endPrice += parseFloat(quantitys[q]) * parseFloat(prices[q]);
}
alert(endPrice);
你不能使用双循环。 这会使每个价格与每个数量相乘。 你想要做的是:
var endPrice = 0;
for (var i = 0; i < quantitys.length; i++) {
endPrice += quantitys[i] * prices[i];
}
您使用的是嵌套循环,因此每个数量都会乘以每个价格。 你只需要一个循环。
您使用的是endPrice = ...
每次通过此行时,这将覆盖endPrice
。 您需要使用+=
将添加到当前的enbPrice
var prices = [14.60, 39.00]; var quantities = [10,5]; var endPrice = 0; for(let i=0, l=prices.length;i<l;i++){ endPrice += prices[i] * quantities[i]; } console.log(endPrice);
编辑
OP需要分开总计。 (见@David Thomas的回答)
var prices = [14.60, 39.00]; var quantities = [10, 5]; var totals = prices.map((p, index) => p * quantities[index]); console.log(totals);
要将一个数组中的每个价格乘以第二个数组中相同索引处的数字,我建议:
var price = [14.60, 39.00],
quantity = [10, 5],
// here we iterate over the price Array, using
// Array.prototype.map() in order to return a
// new Array:
totals = price.map(
// p: the current array-element of
// the Array of prices,
// index: the index of the current
// array-element of the Array.
// using an Arrow function to
// multiply the price ('p') by
// the value held in the quantity
// Array at the same index:
(p,index) => p * quantity[index]
);
// logging the created 'totals' Array to the console:
console.log(totals); // [146,195]
// logging the created Array, after joining its
// elements together to form a String with values
// separated with a ',' character:
console.log(totals.join(',')); // "146,195"
关闭,你缺少+=
而不是=
endPrice += quantitys[q] * prices[p];
根据您的值,您可能还需要解析它们,因此:
endPrice += (parseInt(quantitys[q]) * prices[p]) // you're already parsing prices;
编辑注释中的更多信息:
由于代码的方式,它们的价格与数量在同一行,因此它们将是相同的。 所以,新代码将是......
for (var q = 0; q < quantitys.length; q++) {
endPrice += parseInt(quantitys[q]) * prices[q];
}
const prices = [14.60, 39.00]; const qty = [10, 5]; const endPrice = prices.reduce((total, price, i) => total + price * qty[i], 0); console.log(endPrice);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.