node.js - 节点电子商务购物车 NaN 问题
问题描述
正在计算我的购物车的总数,我似乎遇到了一个数字问题。我不太确定这个功能哪里出错了。请忽略我刚刚编码时是否没有正确计算总数,但是使用 JSON 我传递的是数字而不是字符串。
JSON
{
"id": "611afa8b9069c9126cff3357",
"discount": {
"title": "None",
"type": "None",
"percent": 0
},
"items": [
{
"sku": 1000,
"qty": 2,
"price": 10.99
},
{
"sku": 1001,
"qty": 2,
"price": 16.99
},
{
"sku": 1003,
"qty": 1,
"price": 15.99
}
]
}
const calculateTotal = (items, discount) => {
let total = 0;
let discountAmt = 0;
console.log(discount);
console.log(items);
console.log(items.length);
for (let i = 0; (j = items.length), i < j; i++) {
discountAmt = 0;
if (discount.type == "Item" && discount.itemNum == j.sku) {
discountAmt = j.price * (discount.percent / 100);
total = total - discountAmt;
} else {
total = total + j.price * j.qty;
}
}
if (discount.type == "Order") {
discountAmt = 0;
discountAmt = total * (discount.percent / 100);
total = total - discountAmt;
}
console.log(total);
return total;
};
控制台返回
{ title: 'None', type: 'None', percent: 0 }
[
{ sku: 1000, qty: 2, price: 10.99 },
{ sku: 1001, qty: 2, price: 16.99 },
{ sku: 1003, qty: 1, price: 15.99 }
]
3
NaN
NaN
解决方案
如果你想遍历你的项目,那么你的循环是不正确的。
你可以这样做:
for (let i = 0; i < items.length; i++) { // i as index
let j = items[i]; // j will have the object based on the index
discountAmt = 0;
if (discount.type == "Item" && discount.itemNum == j.sku) {
discountAmt = j.price * (discount.percent / 100);
total = total - discountAmt;
} else {
total = total + j.price * j.qty;
}
}
或更简单:
for (let j of items) {
discountAmt = 0;
if (discount.type == "Item" && discount.itemNum == j.sku) {
discountAmt = j.price * (discount.percent / 100);
total = total - discountAmt;
} else {
total = total + j.price * j.qty;
}
}
推荐阅读
- python - 如何通过python查找和更改所有json.gz文件
- intellij-idea - Idea插件:如何使注释器适用于普通文件
- javascript - 如何从输入框中获取值并使用按钮单击角度保存到数据库
- sql - 删除许多带有 null 的列
- android - 嘿伙计们,我尝试将生成的 apk 上传到 Google Play 商店并不断收到此错误任何想法
- javascript - 使用 JQuery 将输入附加到 HTML 表单不起作用
- c++ - 在 qml js 函数中实例化 c++ 结构
- sql - SQL Lead/Lag until a certain condition and update the previous/next rows with a value from the row that hit the condition
- android - DialogFragment 中的 Spinner 未触发 setOnSelectedItemListener
- django - get_%field%_display 没有实例