每次我获得新价格时,都应该发生以下情况: totalprice = totalprice + cart [i] 例如,如果 totalprice 以前为500且新价格为800,那么 totalprice 应为(500 + 800),而目前为500(800) + 500 + 800)。为什么会这样?
exports.add = function(req, res) {
var cart = req.body.cart;
console.log('frome node..adding checkcart.js');
console.log("Session Initialized!!");
for(var i = 0 ; i < cart.length ; i++) {
totalprice = cart[i].price + totalprice;
console.log('Current Price: '+cart[i].price);
}
req.session.cart = cart;
console.log(cart);
console.log('total: ' + totalprice);
//req.session.totalprice = totalprice;
json_responses = {
"totalprice": req.session.totalprice
}
res.send(json_responses);
};
答案 0 :(得分:0)
这是许多答案之一。我建议创建一个可以计算已添加项目数量的变量。否则,你的for循环会一次又一次地计算它们。请记住,你的问题缺少很多代码,所以这会让我添加两个选项。
选项1
每次用户添加项目时,都会调用添加功能。对于此选项,您只需将最后添加项添加到总价计算中。所以在你的代码中,而不是:
for(var i = 0 ; i < cart.length ; i++) {
totalprice = cart[i].price + totalprice;
console.log('Current Price: '+cart[i].price);
}
使用:
totalprice = cart[cart.length-1].price + totalprice;
选项2
此选项适用于用户可以添加多个项目的情况,并且一旦用户单击调用add方法的按钮,就会计算价格。这稍微有些棘手。您需要添加一个计数器,用于计算已计算的项目。所以在代码中:
var counter = 0;
exports.add = function(req, res) {
var cart = req.body.cart;
var prevCounter = counter;
counter = req.body.cart.length - counter; // items added in the session
console.log('frome node..adding checkcart.js');
console.log("Session Initialized!!");
for(var i = prevCounter ; i < counter ; i++) {
totalprice = cart[i].price + totalprice;
console.log('Current Price: ' + cart[i].price);
}
req.session.cart = cart;
console.log(cart);
console.log('total: ' + totalprice);
//req.session.totalprice = totalprice;
json_responses = {
"totalprice": req.session.totalprice
}
res.send(json_responses);
};
祝你好运!