* feat(tools): add seed/solution restore script * chore(curriculum): remove empty sections' markers * chore(curriculum): add seed + solution to Chinese * chore: remove old formatter * fix: update getChallenges parse translated challenges separately, without reference to the source * chore(curriculum): add dashedName to English * chore(curriculum): add dashedName to Chinese * refactor: remove unused challenge property 'name' * fix: relax dashedName requirement * fix: stray tag Remove stray `pre` tag from challenge file. Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
id: 56533eb9ac21ba0edf2244dd
 | 
						|
title: Selecting from Many Options with Switch Statements
 | 
						|
challengeType: 1
 | 
						|
videoUrl: 'https://scrimba.com/c/c4mv4fm'
 | 
						|
forumTopicId: 18277
 | 
						|
dashedName: selecting-from-many-options-with-switch-statements
 | 
						|
---
 | 
						|
 | 
						|
# --description--
 | 
						|
 | 
						|
If you have many options to choose from, use a <dfn>switch</dfn> statement. A `switch` statement tests a value and can have many <dfn>case</dfn> statements which define various possible values. Statements are executed from the first matched `case` value until a `break` is encountered.
 | 
						|
 | 
						|
Here is an example of a `switch` statement:
 | 
						|
 | 
						|
```js
 | 
						|
switch(lowercaseLetter) {
 | 
						|
  case "a":
 | 
						|
    console.log("A");
 | 
						|
    break;
 | 
						|
  case "b":
 | 
						|
    console.log("B");
 | 
						|
    break;
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
`case` values are tested with strict equality (`===`). The `break` tells JavaScript to stop executing statements. If the `break` is omitted, the next statement will be executed.
 | 
						|
 | 
						|
# --instructions--
 | 
						|
 | 
						|
Write a switch statement which tests `val` and sets `answer` for the following conditions:  
 | 
						|
`1` - "alpha"  
 | 
						|
`2` - "beta"  
 | 
						|
`3` - "gamma"  
 | 
						|
`4` - "delta"
 | 
						|
 | 
						|
# --hints--
 | 
						|
 | 
						|
`caseInSwitch(1)` should have a value of "alpha"
 | 
						|
 | 
						|
```js
 | 
						|
assert(caseInSwitch(1) === 'alpha');
 | 
						|
```
 | 
						|
 | 
						|
`caseInSwitch(2)` should have a value of "beta"
 | 
						|
 | 
						|
```js
 | 
						|
assert(caseInSwitch(2) === 'beta');
 | 
						|
```
 | 
						|
 | 
						|
`caseInSwitch(3)` should have a value of "gamma"
 | 
						|
 | 
						|
```js
 | 
						|
assert(caseInSwitch(3) === 'gamma');
 | 
						|
```
 | 
						|
 | 
						|
`caseInSwitch(4)` should have a value of "delta"
 | 
						|
 | 
						|
```js
 | 
						|
assert(caseInSwitch(4) === 'delta');
 | 
						|
```
 | 
						|
 | 
						|
You should not use any `if` or `else` statements
 | 
						|
 | 
						|
```js
 | 
						|
assert(!/else/g.test(code) || !/if/g.test(code));
 | 
						|
```
 | 
						|
 | 
						|
You should have at least 3 `break` statements
 | 
						|
 | 
						|
```js
 | 
						|
assert(code.match(/break/g).length > 2);
 | 
						|
```
 | 
						|
 | 
						|
# --seed--
 | 
						|
 | 
						|
## --seed-contents--
 | 
						|
 | 
						|
```js
 | 
						|
function caseInSwitch(val) {
 | 
						|
  var answer = "";
 | 
						|
  // Only change code below this line
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  // Only change code above this line
 | 
						|
  return answer;
 | 
						|
}
 | 
						|
 | 
						|
caseInSwitch(1);
 | 
						|
```
 | 
						|
 | 
						|
# --solutions--
 | 
						|
 | 
						|
```js
 | 
						|
function caseInSwitch(val) {
 | 
						|
  var answer = "";
 | 
						|
 | 
						|
  switch(val) {
 | 
						|
    case 1:
 | 
						|
      answer = "alpha";
 | 
						|
      break;
 | 
						|
    case 2:
 | 
						|
      answer = "beta";
 | 
						|
      break;
 | 
						|
    case 3:
 | 
						|
      answer = "gamma";
 | 
						|
      break;
 | 
						|
    case 4:
 | 
						|
      answer = "delta";
 | 
						|
  }
 | 
						|
  return answer;
 | 
						|
}
 | 
						|
```
 |