Credit Card Checker: Stuck!

Hello!
I’m super stuck on the Credit Card Checker project for Javascript.
I expect my code to output “true” or “false”, but instead, it outputs an array. I’m actually quite happy with the array result, because it did everything up to line 54. However, the code after that, where I try to make the numbers add up and check if they’re divisible by 10, is not working.
Any feedback or tips would be appreciated!
(p.s.: I have reviewed the other posts about this project, but there seem to be all sorts of unique ways of getting stuck on this project.)

// All valid credit card numbers const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; const valid2 = [5, 5, 3, 5, 7, 6, 6, 7, 6, 8, 7, 5, 1, 4, 3, 9]; const valid3 = [3, 7, 1, 6, 1, 2, 0, 1, 9, 9, 8, 5, 2, 3, 6]; const valid4 = [6, 0, 1, 1, 1, 4, 4, 3, 4, 0, 6, 8, 2, 9, 0, 5]; const valid5 = [4, 5, 3, 9, 4, 0, 4, 9, 6, 7, 8, 6, 9, 6, 6, 6]; // All invalid credit card numbers const invalid1 = [4, 5, 3, 2, 7, 7, 8, 7, 7, 1, 0, 9, 1, 7, 9, 5]; const invalid2 = [5, 7, 9, 5, 5, 9, 3, 3, 9, 2, 1, 3, 4, 6, 4, 3]; const invalid3 = [3, 7, 5, 7, 9, 6, 0, 8, 4, 4, 5, 9, 9, 1, 4]; const invalid4 = [6, 0, 1, 1, 1, 2, 7, 9, 6, 1, 7, 7, 7, 9, 3, 5]; const invalid5 = [5, 3, 8, 2, 0, 1, 9, 7, 7, 2, 8, 8, 3, 8, 5, 4]; // Can be either valid or invalid const mystery1 = [3, 4, 4, 8, 0, 1, 9, 6, 8, 3, 0, 5, 4, 1, 4]; const mystery2 = [5, 4, 6, 6, 1, 0, 0, 8, 6, 1, 6, 2, 0, 2, 3, 9]; const mystery3 = [6, 0, 1, 1, 3, 7, 7, 0, 2, 0, 9, 6, 2, 6, 5, 6, 2, 0, 3]; const mystery4 = [4, 9, 2, 9, 8, 7, 7, 1, 6, 9, 2, 1, 7, 0, 9, 3]; const mystery5 = [4, 9, 1, 3, 5, 4, 0, 4, 6, 3, 0, 7, 2, 5, 2, 3]; // An array of all the arrays above const batch = [ valid1, valid2, valid3, valid4, valid5, invalid1, invalid2, invalid3, invalid4, invalid5, mystery1, mystery2, mystery3, mystery4, mystery5, ]; // Add your functions below: const validateCred = arr => { let lastNumber = arr.pop(); arr.reverse(); let modified = arr.slice(0); for (let i = 1; i < modified.length; i += 2) { modified[i] *= 2; if (modified[i] > 9) { modified[i] -= 9; } } modified.push(lastNumber); return modified; let sum = modified.reduce((acc, val) => acc + val); if (sum % 10 === 0) { return true; } else { return false; } }; console.log(validateCred(valid2));

You have
return modified;
on line 54.
Since modified is an array, the function returns that array.
Take this line out to continue to the code afterward.

1 Like

Oh woooow!!! That’s fantastic! Thank you!

BTW, I found one more mistake in my own code. On line 47, it should say “let i = 0;” (rather than 1). Now the correct items are multiplied by 2 and a valid card number came back “true”, as it should.
:raised_hands:

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.