# indexOf(Array) Help

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
}

// Note: Only the last will display
cc(2); cc(3); cc(4); cc(5); cc(6);

``````

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