I feel like I’m going crazy, I’m on the Credit Card Checker for JavaScript, and I made this code:
const validateCred = (arr) => {
let check = arr[arr.length-1];
let arrcopy = arr.map((x) => x);
arrcopy.pop();
arrcopy.reverse();
for (let i = 0; i < arr.length; i = i+2){
arrcopy[i] = arrcopy[i]*2;
if (arrcopy[i] > 9){
arrcopy[i] = arrcopy[i]-9
}else{
arrcopy[i] = arrcopy[i];
}
};
var sum = arrcopy.reduce(function(a, b){
return a + b;
}, 0);
let totalSum = sum + check;
if (totalSum % 10 === 0){
return true;
}else{
return false;
};
};
This algorithm works for every valid card number except for this one;
const valid3 = [3, 7, 1, 6, 1, 2, 0, 1, 9, 9, 8, 5, 2, 3, 6];
I’ve tried to calculate by hand whether this is a valid credit card number or not, and so far I have come back with a negative. Can I please have some outer feedback suggesting what I do, unless this is a content error.
Thanks in advance!