Credit Card Chekcer

Just got done with the first parts of the full stack developer Credit Card checker project.

This is what I got, does it make any sense whatsoever, or is the code useless, I know it doesn’t fully work right now, please help me. I am trying so hard to become a better developer, but I am really struggling at the moment.

Thanks for your help!

// 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:

var sum = 0 

const validateCred = (arr) => { 
  
  for(var i = 1; i < arr.length; i--) 
  var double = arr[i]; 
  var doubled = double * 2;
  if(doubled > 9) { 
    return doubled - 9; 
    sum.push(doubled) 
} if(sum % 10 === 0) { 
  return invalid 
  } else { 
    return valid 
  } 
}

You’re counting down here. Starting from 1, which is smaller than the exit condition, you’ll end up in an infinite loop.
Also, the for loop requires curly braces after the statements in the parenthesis.

If you’d run over each digit in the array, this would mean that you double each digit, which isn’t what the Luhn algorithm requires.

What you write after the return keyword inside the same scope will never be executed.
If it were, you’d get a type error, because you try to push to a string.

invalid is not defined. Either you return a string, a number, a defined variable or just a bool.

Hi Mirja,

Thank you so much for your help, I really apreciate it! If you have any tips for improving as a web developer, please do send them my way. I am unfortunately making so many stupid mistakes, despite the fact that I am using hints, googling all sorts of things. Oh well.

The function you provided here had a lot of errors, which makes it hard to debug.
So I would suggest that you check each step you do. For example, step 1:

const validateCred = (arr) => { 
  for(var i = 1; i < arr.length; i--) {
 		console.log(i);
	}
}
validateCred([1,2,3]);

That would probably have ended in a browser crash due to the infinite loop, so you’d known that there’s something wrong. And with such a small function, you’d have been able to find the error.
Once fixed you could add the second step:

const validateCred = (arr) => { 
  for(let i = 0; i < arr.length; i++) {
		var double = arr[i]; 
  	var doubled = double * 2;
 		console.log(doubled);
	}
}
validateCred([1,2,3]);

And so on.

  1. A huge amount of patience and perseverance
  2. Even more console.log()s

The most important part of programming is debugging.

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