I’m new to studying Javascript and I’ve just got stuck on this project. My code only shows some of the valid numbers as valid.
// Add your functions below:
const validateCred = array => {
const newArr = array.reverse();
let check = newArr.shift();
let doubledSum = 0;
let singleSum = 0;
for (let i=1; i<newArr.length; i+= 2) {
if ((newArr[i]*2) > 9){
doubledSum += ((newArr[i]*2)-9);
} else {
doubledSum += newArr[i]*2;
}
}
for (let j =0; j< newArr.length; j+=2) {
singleSum += newArr[j];
}
const result = (singleSum + doubledSum + check) % 10;
if (result === 0) {
console.log('valid');
} else {
console.log('invalid');
}
}
validateCred([5, 5, 3, 5, 7, 6, 6, 7, 6, 8, 7, 5, 1, 4, 3, 9]);
// This is supposed to be a valid card number but it is logging invalid to the console.type or paste code here
[https://www.codecademy.com/paths/full-stack-engineer-career-path/tracks/fscp-22-javascript-syntax-part-ii/modules/wdcp-22-credit-card-checker/projects/credit-card-checker]
Hi,
a few observations:
This causes the original array (credit card number) to be reversed because it doesn’t make a copy of the array. That will cause trouble when you will continue with the other functions to follow.
Same thing here: It will alter the original array passed into the function.
Since you stripped the check digit from the array, and if I remember correctly, you should double every other digit starting with the number right next to the check digit, this for loop should start at 0 and the other one should start at 1 instead.
So if you swap the starting numbers of the two for loops and make a real copy of the array like this for example:
const newArr = [...array];
newArr.reverse();
You should be done with the 1st function.
1 Like
Thank you! I can see now where I was wrong. Now it works out like it should.
1 Like