Counting Cards Not returning the right answer

Counting Cards Not returning the right answer
0

#1

I’m trying to finish this challenge without using a switch statement.
The console.log at the end does not seem to return anything at the moment, so guessing where the code is off is beyond me…

Does anyone see what is wrong with the function so far?

Your code so far


var count = 0;

function cc(card) {
  // Only change code below this line
  if (card == (2 || 3 || 4 || 5 || 6)) { 
   count =+ 1;
   if count > 0 {
      return count + " Bet";
   } else {
     return count + " Hold";
   }
  } 

  else if (card == (7 || 8 || 9)) {
    count =+ 0;
     if count > 0 {
      return count + " Bet";
   } else {
     return count + " Hold";
   }

   else if (card == (10 || 'J'|| 'Q' || 'K' || 'A')) {
     count =- 1;
     if count > 0 {
      return String (count) + " Bet";
   } else {
     return String (count) + " Hold";
   }
   }
  var outPut = cc;
  console.log(outPut);
  // Only change code above this line
}

// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc('K'); cc('A');

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/counting-cards


#2

You have to make each OR number comparison (i.e. 2, 3, 4, 5, 6) to card. For example, if I want to check if card is equal to 20 OR 30, I would have to write:

if (card === 20 || card === 30) {

Also, there is no such operator as =+ or =-. Review previous lessons concerning the compound assignment operators to see the correct operator to use.

Finally, you have major duplicate code. The following is repeated 3 times:

   if count > 0 {
      return count + " Bet";
   } else {
     return count + " Hold";
   }

You only need to write this code a single time after you have properly increased/decreased the value of count.

One last question for you to think about. If card is 7, 8 or 9, do you really need to do anything?


#3

Few things that i noticed are, some of your if statements don’t have the condition wrapped in parentheses. Also, the assignment of var outPut is missing parentheses.


#4

Thank you very much for the quick replies!!

I edited out the major duplicate code, looks better now indeed.

The output is still not what it should be, is there something else I’m missing now:

var count = 0;

function cc(card) {
  // Only change code below this line
  if (card == 2 || card == 3 || card == 4 || card == 5 || card == 6) { 
   count= count + 1;
  } 

   else if (card == 10 || card == 'J'|| card == 'Q' || card == 'K' || card == 'A') {
     count = count - 1;
   }

   if count > 0 {
      return (count) + " Bet";
   } else {
     return (count) + " Hold";
   }

  var outPut = cc;
  console.log("outPut");

#5

ohhhhhhh. forgot one more set of parentheses, around the last count > 0 bit.

Thank you so much for the help!! Appreciate it. All fixed now.


#6

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make easier to read.

Note: Backticks are not single quotes.

See this post to find the backtick on your keyboard. The “preformatted text” tool in the editor (</>) will also add backticks around text.

FYI" count = count - 1; can be written as count--; and count = count + 1; can be written as count++;

Also, the following:

   if count > 0 {
      return (count) + " Bet";
   } else {
     return (count) + " Hold";
   }

could be written without the else, because if the first turn does not execute, the 2nd one will.

   if count > 0 {
      return (count) + " Bet";
   }
   return (count) + " Hold";