JavaScript-函数问题

JavaScript-函数问题,javascript,function,switch-statement,Javascript,Function,Switch Statement,我刚开始使用JavaScript,我正在尝试完成以下练习: 我有一个名为bill的数组,其中包含3个元素[124、48、268] 我想调用一个函数,该函数根据帐单金额计算小费,少于$50(百分比=0.2),帐单金额在$50和$200之间(百分比=0.15),帐单金额超过$200(百分比=0.1) 我使用了以下代码: var票据=[124,48,268]; var percCalculation=函数(金额){ 风险值百分比; 开关(数量){ 案例(金额=50和金额200): 百分比=.1; }

我刚开始使用JavaScript,我正在尝试完成以下练习:

我有一个名为
bill
的数组,其中包含3个元素
[124、48、268]

我想调用一个函数,该函数根据帐单金额计算小费,少于$50(百分比=0.2),帐单金额在$50和$200之间(百分比=0.15),帐单金额超过$200(百分比=0.1)

我使用了以下代码:

var票据=[124,48,268];
var percCalculation=函数(金额){
风险值百分比;
开关(数量){
案例(金额<50):
百分比=.2;
案例(金额>=50和金额<200):
百分比=.15;
案例(金额>200):
百分比=.1;
}
退货百分比*金额
}
var tipAmount=[percCalculation(账单[0]),
(工程量清单[1]),
(工程量清单[2]);

控制台日志(tipAmount)请记住
开关
案例中的“失败”,如继续执行,直到碰到
中断
返回
开关
结束,因此:

var percalculation=函数(金额){
风险值百分比;
开关(数量){
案例(金额<50):
百分比=.2;
打破
案例(金额>=50和金额<200):
百分比=.15;
打破
案例(金额>200):
百分比=.1;
打破
}
退货百分比*金额
}
var票据=[124,48,268];
var tipAmount=[percCalculation(账单[0]),
(工程量清单[1]),
(工程量清单[2]);

控制台日志(tipAmount)请记住
开关
案例中的“失败”,如继续执行,直到碰到
中断
返回
开关
结束,因此:

var percalculation=函数(金额){
风险值百分比;
开关(数量){
案例(金额<50):
百分比=.2;
打破
案例(金额>=50和金额<200):
百分比=.15;
打破
案例(金额>200):
百分比=.1;
打破
}
退货百分比*金额
}
var票据=[124,48,268];
var tipAmount=[percCalculation(账单[0]),
(工程量清单[1]),
(工程量清单[2]);

控制台日志(tipAmount)您的第一笔金额的switch语句,124如下所示

var percentage = undefined; // implied value of undeifned
switch(124) {
  case false: ......
  case true: ....
  case false: ....
}
return 124 * undefined; // this is Nan
因为没有案例匹配124,所以百分比永远不会得到值,结果得到NaN

因此,您需要
切换(true)
,因为只有一种情况是真的

您还希望在每个案例结束时
中断
,以便执行不会“失败”到下一个案例

还有一点好处,您的函数可以用作对数组映射方法的回调-请参阅代码段的底部

var percalculation=函数(金额){
风险值百分比;
开关(真){
案例(金额<50):
百分比=.2;
打破
案例(金额>=50和金额<200):
百分比=.15;
打破
案例(金额>200):
百分比=.1;
打破
}
return(percentage*amount).toFixed(2)//返回一美元和一美分
}
var票据=[124,48,268];
var tipAmount=[percCalculation(账单[0]),
(工程量清单[1]),
(工程量清单[2]);
控制台日志(tipAmount);
//奖金。。。使用map使您的代码“干燥”
var tip2=账单映射(PERC计算);

控制台日志(tip2)您的第一笔金额的switch语句,124如下所示

var percentage = undefined; // implied value of undeifned
switch(124) {
  case false: ......
  case true: ....
  case false: ....
}
return 124 * undefined; // this is Nan
因为没有案例匹配124,所以百分比永远不会得到值,结果得到NaN

因此,您需要
切换(true)
,因为只有一种情况是真的

您还希望在每个案例结束时
中断
,以便执行不会“失败”到下一个案例

还有一点好处,您的函数可以用作对数组映射方法的回调-请参阅代码段的底部

var percalculation=函数(金额){
风险值百分比;
开关(真){
案例(金额<50):
百分比=.2;
打破
案例(金额>=50和金额<200):
百分比=.15;
打破
案例(金额>200):
百分比=.1;
打破
}
return(percentage*amount).toFixed(2)//返回一美元和一美分
}
var票据=[124,48,268];
var tipAmount=[percCalculation(账单[0]),
(工程量清单[1]),
(工程量清单[2]);
控制台日志(tipAmount);
//奖金。。。使用map使您的代码“干燥”
var tip2=账单映射(PERC计算);

控制台日志(tip2)阅读有关调试代码的提示。找到问题后,我建议您了解
map()
函数。了解如何使用-您做得非常错误阅读有关调试代码的提示。找到问题后,我建议您了解
map()
function.学习如何使用-你做得很好wrong@JaromandaX我有一个工作版本,得到了忍者编辑。在我的例子中,函数没有将数组上的数字识别为一个数字,我不知道为什么它只是
开关(true)
…:p@RafaelRodriguesSantos这些数字是可以识别的,您只需使用开关即可wrong@Code-学徒们很欣赏这个片段的处理,但这只是时间安排不好。@JaromandaX我有一个工作版本,它有一个忍者编辑。在我的例子中,函数没有将数组上的数字识别为一个数字,我不知道为什么它只是
开关(true)
…:p@RafaelRodriguesSantos这些数字是可以识别的,您只需使用开关即可wrong@Code-学徒们很欣赏这个片段的处理,但这只是个糟糕的时机。