我正在尝试解决freecodecamp中的Golf Code挑战,我无法弄清楚我的代码有什么问题 这是直接link。链接包含我尝试运行的代码,只需访问链接。
我的JS:
function golfScore(par, strokes) {
if(strokes == 1) return "Hole-in-one!";
else if(strokes <= par -2) return "Eagle";
else if(strokes === par -1) return "Birdie";
else if(strokes === par) return "Par";
else if(strokes === par + 1) return "Bogey";
else if(strokes === par + 2) return "Double Bogey";
else if(strokes >= par + 3) return "Go Home";
return "Change Me";
}
golfScore(5, 4);
要求:
在高尔夫球比赛中,每个洞都具有标准意义,即高尔夫球手为了将球沉入洞中以完成比赛所期望的平均击球次数。根据你的笔画高出或低于标准杆的距离,有一个不同的昵称。
您的函数将传递par和stroke参数。根据此表返回正确的字符串,该表按优先级顺序列出笔划;顶部(最高)到底部(最低):
中风回归:
1 "Hole-in-one!"
<= par - 2 "Eagle"
par - 1 "Birdie"
par "Par"
par + 1 "Bogey"
par + 2 "Double Bogey"
>= par + 3 "Go Home!"
感谢您提前帮助。
答案 0 :(得分:2)
你几乎就在那里。您的解决方案未被接受的唯一原因是您返回Go Home
而不是Go Home!
(请注意结尾处的感叹号)。
答案 1 :(得分:1)
FCC高尔夫球场解决方案:
var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
if (strokes == 1) return names[0];
else if (strokes <= par - 2) return names[1];
else if (strokes == par - 1) return names[2];
else if (strokes == par) return names[3];
else if (strokes == par + 1) return names[4];
else if (strokes == par + 2) return names[5];
else if (strokes >= par + 3) return names[6];
return "Change Me"; // in case: if non-valid input given
}
console.log(golfScore(5, 4));
答案 2 :(得分:1)
对于任何在未来坚持这一点的人来说,OP 的代码是合乎逻辑的,只是缺少“!”的错字。在“回家!”中。
提醒一下这些类型的事情有多详细。干杯
答案 3 :(得分:0)
我觉得这种解决方案更清洁。使用较少的心理资源。在打电话之前你不必反转args。
db
答案 4 :(得分:0)
我讨厌嵌套的if-else语句...除非他们一次性完成它或者超过标准杆2次以上,否则将(笔画 - 标准杆)添加到&#34; Par&#34;在这样的数组中将返回适用的分数。
即。 Par 4,在阵列中Par = 3,而3 - 1 = 2,即Birdie。
我知道这比课程要求的更复杂,但我真的不喜欢嵌套if-else ......
function golfScore(par, strokes) {
var arr = ["Eagle", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey"];
switch(true) {
case (strokes == 1): return "Hole-in-one!";
case (strokes - par > 2): return "Go Home!";
default: return arr[arr.indexOf("Par") + (strokes - par)];
}
}
// Change these values to test
golfScore(4, 7);
答案 5 :(得分:0)
我的基本JavaScript解决方案:高尔夫代码
function golfScore(par, strokes) {
// Only change code below this line
if(strokes >= par + 3) {
return names[6];
} else if(strokes == par + 2) {
return names[5];
} else if(strokes == par + 1) {
return names[4];
} else if(strokes == 1) {
return names[0];
} else if(strokes == par) {
return names[3];
} else if(strokes == par - 1) {
return names[2];
} else if(strokes <= par - 2) {
return names[1];
}
return "Change Me";
// Only change code above this line
}
答案 6 :(得分:0)
var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
// Only change code below this line
if(strokes === 1){
return names[0];
}else if(strokes <= par - 2){
return names[1];
}else if(strokes === par - 1){
return names[2];
}else if(strokes === par){
return names[3];
}else if(strokes === par + 1){
return names[4];
}else if(strokes === par + 2){
return names[5];
}else if(strokes >= par + 3){
return names[6];
}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
答案 7 :(得分:0)
原始答案很好,但是没有使用提供的名称数组。我成功完成了以下挑战:
// Only change code below this line
if(strokes == 1) {
return names[0];
}
if(strokes <= par -2) {
return names[1];
}
if(strokes == par -1) {
return names[2];
}
if(strokes == par) {
return names[3];
}
if(strokes == par +1) {
return names[4];
}
if(strokes == par +2) {
return names[5];
}
if(strokes >= par +3) {
return names[6];
}
return "Change Me";
// Only change code above this line
}
答案 8 :(得分:0)
这是我的答案
var names = ["Eagle", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey"];
function golfScore(par, strokes) {
// Only change code below this line
if(strokes == 1) return names[0];
else if(strokes <= par - 2) return names[1];
else if(strokes <= par - 1) return names[2];
else if(strokes == par) return names[3];
else if(strokes <= par + 1) return names[4];
else if(strokes <= par + 2) return names[5];
else {
return names[6];
}
return "Change Me";
// Only change code above this line
}