# Credit card checker project

Hallo there,
can anyone please lend a hand trying to figure out this problem. I don’t know what has gone wrong with my code. This is for the credit card checker too. I think I’m not doing the calculations correctly but not sure why that is. Any help would be greatly appreciated. Thanks

``````const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; //for this my function returns false.

const validateCred = (array) => {
let len = array.length
let newArray = []
for(let i = len-1; i >= 0; i--) {
let num = array[i];

if ( i % 2 !== 0) {
num*= 2;
if (num > 9) {
num -= 9;

newArray.push(num);
} else {

newArray.push(num);
}
} else {
newArray.push(num);
}

}

newArray.push(array[len-1]);

const reducer = (a, b) => (a + b);

sum = newArray.reduce(reducer)

return sum % 10 === 0

};
``````

I see a problem here:

``````if ( i % 2 !== 0) {
``````

The algorithm says to double every other number starting from the end (where the next-to-last one is doubled).
However, yours doubled any number at each odd-numbered index.

Using the odd index only matches (doubling the numbers that algorithm says to double) only when the length of the array is an odd number. [The algorithm would match doubling the even indices if the length of the array is even.]

Also,

``````newArray.push(array[len-1]);
``````

should not be there;
because you already handled stuff at the `len-1` index in the loop previously.
You can delete that line of code.

Thanks for your help. I was quite confused with the whole correct index to double problem. I gave in and looked at the solution in the end. And changing the way I approached getting the correct indicies has solved the problem. I’m also not adding anything to an array anymore, just looping through and adding to a total. So simple. Simplicity is the way to go.
Here’s the final code. Works perfectly. Thanks alot for you help.

[codebyte language=golang] const validateCred = (array) => { //console.log(array) let len = array.length let sum = 0 for(let i = len-2; i >= 0; i--) { let num = array[i]; if ((array.length - 1 - i) % 2 === 1) { num*= 2; if (num > 9) { num -= 9; } }sum += num; } let checkDigit = array.pop(); sum += checkDigit; return sum % 10 === 0; }; [/codebyte]