Hello everyone,
I finished the Credit Card Checker project:
Although I think I implemented the Luhn algorithm as described, the second and third card labelled as valid cards (const valid2
and const valid3
) return false. The rest return the expected result:
const valid2 = [5, 5, 3, 5, 7, 6, 6, 7, 6, 8, 7, 5, 1, 4, 3, 9];
const validateCred = (array) => {
const arr = array.map(el => el).reverse();
const newArr = [];
let cache = 0;
for( let i = 0; i < arr.length; i++ ) {
if( i % 2 === 1 ) {
cache = arr[i] * 2;
if( cache > 10 ) {
cache = cache - 9;
}
}
else {
cache = arr[i];
}
newArr.push(cache);
}
cache = newArr.reduce( (prev, curr) => prev + curr );
console.log('original card number: ' + arr.reverse() + '\n processed card number: ' + newArr.reverse() + '\n sum: ' + cache);
// "original card number: 5,5,3,5,7,6,6,7,6,8,7,5,1,4,3,9
// processed card number: 10,5,6,5,5,6,3,7,3,8,5,5,2,4,6,9
// sum: 89"
if (cache % 10 === 0) {
return true;
}
}
validateCred(valid2);
Here’s a link to the complete code:
https://jsfiddle.net/mirja_t/odtafjrs/5/
Are they labelled incorrectly or did I do something wrong?