2018-10-12 15:37:13 -04:00
---
title: Golf Code
---
2019-07-24 00:59:27 -07:00
# Golf Code
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
---
## Hints
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
---
## Problem Explanation
Change the code below `// Only change code below this line` and above `// Only change code above this line` .
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
Ensure that you're editing the inside of the `golfScore` function.
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
You will have to make the function return exactly the same string as shown shown in the table, depending on the value of the parameters **par** and **strokes** that are passed to your function.
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
### Hint 1
2018-10-12 15:37:13 -04:00
`+number -number` can be used to increase or decrease a parameter in your condition.
2019-07-24 00:59:27 -07:00
### Hint 2
2018-10-12 15:37:13 -04:00
You use `if / else if` chains to return different values in different scenarios.
2019-07-24 00:59:27 -07:00
### Hint 3
2018-10-12 15:37:13 -04:00
Control the flow of your function based on the tables order of priority - top (highest) to bottom (lowest) to return matching string values.
2019-07-24 00:59:27 -07:00
---
## Solutions
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
< details > < summary > Solution 1 (Click to Show/Hide)< / summary >
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
```javascript
function golfScore(par, strokes) {
// Only change code below this line
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 {
return "Go Home!";
}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
```
2018-10-12 15:37:13 -04:00
2019-07-24 00:59:27 -07:00
#### Code Explanation
2018-10-12 15:37:13 -04:00
* Compare the parameters **par** and **strokes** to return appropriate string values.
* `if / else if` chain is used for flow control.
* String "Go Home!" is returned for every condition where **strokes** is greater than or equal to **par + 3** .
2019-07-24 00:59:27 -07:00
< / details >
< details > < summary > Solution 2 (Click to Show/Hide)< / summary >
2018-10-12 15:37:13 -04:00
```javascript
2019-07-24 00:59:27 -07:00
var names = [
"Hole-in-one!",
"Eagle",
"Birdie",
"Par",
"Bogey",
"Double Bogey",
"Go Home!"
];
2018-10-12 15:37:13 -04:00
function golfScore(par, strokes) {
// Only change code below this line
2019-07-24 00:59:27 -07:00
if (strokes == 1) {
2018-10-12 15:37:13 -04:00
return names[0];
2019-07-24 00:59:27 -07:00
} else if (strokes < = par - 2) {
2018-10-12 15:37:13 -04:00
return names[1];
2019-07-24 00:59:27 -07:00
} else if (strokes == par - 1) {
2018-10-12 15:37:13 -04:00
return names[2];
2019-07-24 00:59:27 -07:00
} else if (strokes == par) {
2018-10-12 15:37:13 -04:00
return names[3];
2019-07-24 00:59:27 -07:00
} else if (strokes == par + 1) {
2018-10-12 15:37:13 -04:00
return names[4];
2019-07-24 00:59:27 -07:00
} else if (strokes == par + 2) {
2018-10-12 15:37:13 -04:00
return names[5];
2019-07-24 00:59:27 -07:00
} else {
return names[6];
2018-10-12 15:37:13 -04:00
}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
```
2019-07-24 00:59:27 -07:00
#### Code Explanation
2018-10-12 15:37:13 -04:00
Since we already have an array defined in the variable `names` we can take advantage of it and use it for our return statements using indexes (eg: `names[0] is the first one` ). That way, if you ever need to change a specific result you wouldn't need to look for it inside the function, it'd be at the beginning, in your array.
2019-07-24 00:59:27 -07:00
< / details >
< details > < summary > Solution 3 (Click to Show/Hide)< / summary >
2018-10-12 15:37:13 -04:00
2018-12-06 23:35:22 +04:00
(Using Multiple Conditional (Ternary) Operators)
```js
2019-07-24 00:59:27 -07:00
function golfScore(par, strokes) {
return strokes == 1
? names[0]
: strokes < = par - 2
? names[1]
: strokes == par - 1
? names[2]
: strokes == par
? names[3]
: strokes == par + 1
? names[4]
: strokes == par + 2
? names[5]
: strokes >= par + 3
? names[6]
: "Change Me";
}
2018-12-06 23:35:22 +04:00
```
2019-07-24 00:59:27 -07:00
#### Relevant Links
2018-10-12 15:37:13 -04:00
* < a href = 'https://en.wikipedia.org/wiki/Golf' target = '_blank' rel = 'nofollow' > Golf</ a >
* < a href = 'http://www.freecodecamp.com/challenges/chaining-if-else-statements' target = '_blank' rel = 'nofollow' > Challenge: Chaining If Else Statements</ a >
* < a href = 'http://www.freecodecamp.com/challenges/comparison-with-the-greater-than-equal-to-operator' target = '_blank' rel = 'nofollow' > Challenge: Comparison with the Greater Than Equal To Operator</ a >
* < a href = 'http://www.freecodecamp.com/challenges/comparison-with-the-less-than-equal-to-operator' target = '_blank' rel = 'nofollow' > Challenge: Comparison with the Less Than Equal To Operator</ a >
* ["Array" - *MDN JavaScript reference* ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array )
2018-12-06 23:35:22 +04:00
* < a href = 'https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators/' target = '_blank' rel = 'nofollow' > Use Multiple Conditional (Ternary) Operators</ a >
2019-07-24 00:59:27 -07:00
< / details >