---
title: Counting Cards
---
# Counting Cards
---
## Hints
### Hint 1
Use a `switch` (or `else if`) statement to count the value of each card.
### Hint 2
Add/subtract the value of each card to variable **count**. If the card is worth 0, don't do anything.
### Hint 3
After you've counted the cards, use an `if` statement to check the value of **count**. Also, make sure your `return` has a space between the number and the string.
---
## Solutions
Solution 1 (Click to Show/Hide)
```javascript
function cc(card) {
// Only change code below this line
switch (card) {
case 2:
case 3:
case 4:
case 5:
case 6:
count++;
break;
case 10:
case "J":
case "Q":
case "K":
case "A":
count--;
break;
}
if (count > 0) {
return count + " Bet";
} else {
return count + " Hold";
}
// Only change code above this line
}
```
#### Code Explanation
* Check the value of each card via a `switch` statement.
* The variable **count**:
* Increases by 1 if the card is a 2, 3, 4, 5, or 6.
* Since 7, 8, and 9 aren't worth anything, we ignore those cards in our `switch` statement.
* Decreases by 1 if the card is a 10, 'J', 'Q', 'K', or 'A'.
* Check the value of **count** and return the appropriate response.
**Example Run**
* `cc(2);` runs.
* The `switch` statement hits `case 2`, jumps down and adds 1 to the variable `count`.
* The `switch` statement then hits the `break` and `cc(3);` runs.
* This cycle continues until the final call is made, `cc('A');`.
* After the `switch` statement, the `if` statement checks `count`, which is now 0.
* This then drops down to the `else` statement, which will return **0 Hold**.
**_Note_**: As mentioned earlier, the `switch` statement could have also been an `else if` statement.
Solution 2 (Click to Show/Hide)
```javascript
function cc(card) {
// Only change code below this line
var regex = /[JQKA]/;
if (card > 1 && card < 7) {
count++;
} else if (card === 10 || String(card).match(regex)) {
count--;
}
if (count > 0) return count + " Bet";
return count + " Hold";
// Only change code above this line
}
```
#### Code Explanation
· The function first evaluates `if` the condition `card` is a value greater than `1` and lower than `7`, in which case it increments `count` by one.
· Then if the card is `10` or higher it decrements `count` by one.
· The variable `regex` is a [regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) representing values (letters) for the higher cards.
· The `else` statement checks those values with the `|| (logical OR)` operator; first for `10` and then for any string that matches the regular expression using [String.match()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match).
#### Relevant Links
* Card counting at Wikipedia
* Challenge: Selecting from many options with Switch Statements
* Challenge: Chaining If Else Statements
* Challenge: Increment a Number with JavaScript