1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Matching Multiple Values In A Switch Statement as a javascript til

This commit is contained in:
jbranchaud
2017-09-21 18:14:07 -05:00
parent c6b7dc7bbe
commit d7e1baaed3
2 changed files with 30 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
For a steady stream of TILs from a variety of rocketeers, checkout
[til.hashrocket.com](https://til.hashrocket.com/).
_564 TILs and counting..._
_565 TILs and counting..._
---
@@ -215,6 +215,7 @@ _564 TILs and counting..._
- [Globally Install A Package With Yarn](javascript/globally-install-a-package-with-yarn.md)
- [Immutable Remove With The Spread Operator](javascript/immutable-remove-with-the-spread-operator.md)
- [Initialize A New JavaScript Project With Yarn](javascript/initialize-a-new-javascript-project-with-yarn.md)
- [Matching Multiple Values In A Switch Statement](javascript/matching-multiple-values-in-a-switch-statement.md)
- [Numbers Are Empty](javascript/numbers-are-empty.md)
- [Object Initialization With Shorthand Property Names](javascript/object-initialization-with-shorthand-property-names.md)
- [Random Cannot Be Seeded](javascript/random-cannot-be-seeded.md)

View File

@@ -0,0 +1,28 @@
# Matching Multiple Values In A Switch Statement
Switch statements are a handy way to execute different branches of code
based on a value match. This is often what is used in Redux reducers when
updating the state in response to certain actions.
But what if you need multiple values to result in the same branch of
execution without duplicating the code?
The execution of a switch statement falls through, so after one match, it
will continue to try and do subsequent matches if you don't interrupt the
execution with a `break` or `return`. Conveniently, this solves our problem
of matching multiple values.
```javascript
switch (action.type) {
case "UPDATE_NAME":
case "UPDATE_DURATION":
let newData = anotherReducer(state.data, action);
return { ...state, data: newData };
default:
return state;
}
```
See the [MDN
docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)
for more details.