Guys, i’m doing the counting cards exercise and i know i’m supposed to do with else-if or switch but i’m curious on how to do it with array. Like, if the card belongs to that array i calc a new count, but the code is not working, what’s wrong?
var count = 0;
function cc(card) {
// Only change code below this line
arraypositive=[2,3,4,5,6];
arrayneutral=[7,8,9];
arraynegative=[10,'J','Q','K','A'];
if (arraypositive.indexOf(card)){
count = count + 1;
}
else if (arrayneutral.indexOf(card)){
}
else {
count = count - 1;
}
if(count > 0){
return count+' Bet';
}
else{
return count+' Hold';
}
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(4); cc(5); cc(6);
I cleaned up your code.
You need to use triple backticks to post code to the forum.
See this post for details.
1 Like
indexOf
returns a number. It returns the index of the item if it’s found in the array and -1
if the item is not in the array. If the item is found at the first position of the array, then indexOf
will return 0
, which is “falsey”. If the item is not in the array it will return -1
, which is “truthy”.
arraypositive.indexOf(card) will return the index of the card in the array if found and -1 if it is not in the array.
Since -1 would be truthy even though no card is found, and 0 would be falsy if a card was found in index 1, you need to set your condition explicity eg
arraypositive.indexOf(card) !== -1
Ye, it worked now. So it can only return 0 / -1?
Nope. It will return the index of the item or -1
var myArr = ['a', 'b', 'c'];
myArr.indexOf('a'); // 0
myArr.indexOf('c'); // 2
myArr.indexOf('z'); // -1
1 Like