【发布时间】:2016-12-22 09:49:43
【问题描述】:
你能帮忙指出我的代码有什么问题吗: 目标是计算 3 人用餐派对的总消费金额,每人点 2 道菜。
我知道还有其他方法可以使用 'this' 和 'new' 以更 oop 的方式执行此操作,但我认为我的方法更具可读性..如果我能让它工作。如果每个顾客只点 1 道菜,代码就可以正常工作,所以我尝试访问 JS 字典的方式有问题。
抱歉,新手问题。感谢您的帮助!
var diners=[
{name:'adam', entree1:'ramen', price1:11.5, entree2: 'miso', price2 : 3},
{name:'bobby', entree1: 'udon', price1 :10.69, entree2: 'gyoza', price2 :4.5},
{name:'carly', entree1: 'teriyaki chicken', price1:12, entree2: 'miso', price2 : 3},
];
var entrees1_total=0;
for (var d in diners){
entrees1_total += diners[d].price1; //total expense of entree1 for all diners
diners[d].tax1 = diners[d].price1*0.082; // method for sales tax
entrees1_total += diners[d].tax1; //total entree1 price including sales tax
}
var entrees2_total=0;
for (var d in diners){
entrees2_total += diners[d].price2;
diners[d].tax2 = diners[d] * price2 * 0.082;
entrees2_total += diners[d].tax2;
}
var total = entree1_total + entree2_total;
var total_bill = total*1.2; //tips
console.log("total is: " + total_bill.toString());
for (var d in diners) {
console.log(diners[d].name + " spends " + (diners[d].price1 + diners[d].tax1)+(diners[d].price2 + diners[d].tax2));
} // print out total spent for each patron
【问题讨论】:
-
不要使用
for ... in遍历数组。使用for(var i = ...或 ES6for ... of。 -
@YeldarKurmangaliyev 为什么?
-
修复jsfiddle.net/cpvejvwj 的语法错误 - 问题似乎出在以下代码中:var total_bill = total*1.2; //tips - 小费不会分布在用餐者之间?
-
@Justinas 见Array iteration and for...in
标签: javascript loops object dictionary