Credit Card checker help

Hello Team,

So, been at this for about 2 days, first time around passing only one Credit Card, had it working perfect but then realized the code could not handle multiples array, so this is where I am right now.

The issue that I am having is that when it checks if the Sum of all digits % 10 === 0. and returns true or false, it completely get out of the function and it does not run the next credit card in line.

Is there something specific that we have so the code can continue on the next iteration of the loop? any code after the return statement becomes unreachable by the IDE

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

const ex = [4,5,3,9,6,8,9,8,8,7,7,0,5,7,9,8];

// An array of all the arrays above
const batch = [valid1, valid2, valid3, valid4, valid5, invalid1, invalid2, invalid3, invalid4, invalid5, mystery1, mystery2, mystery3, mystery4, mystery5]
const Vbatch = [ex, valid2];
const mysteryB = [mystery1, mystery2, mystery3, mystery4, mystery5];

// Add your functions below:
// Will evaluate the cards using Luh algorithm 
const validateCred = arr => {
  let tempNum;
  let totalSum = 0;
  for(let i = 0; i < arr.length; i++) {       // loops through the main array
    totalSum = 0;
    arr[i].reverse();    
    for(let j = 0; j < arr[i].length; j++) {  // loops to each individual array
      if(j % 2 === 0) {                       // takes even index position and adds them to total
        totalSum += arr[i][j];
      } 
      else {
        tempNum = arr[i][j] * 2;              // takes odd index positions and multiply by 2, if > 9, subtracts 9 from it
        if(tempNum > 9) {
          tempNum -= 9;
          totalSum += tempNum;                // adds numbers to total
        } else {
          totalSum += tempNum;                // if not > 9, adds to total/
        }
      }
    }
  }
  if((totalSum % 10) === 0) {
    return true;
  } else {
    return false;
  }
}

//validateCred(Vbatch);
console.log(validateCred(mysteryB));

Your validateCred function just takes one array as an argument. You can loop though the batch with the forEach method and pass the function as argument, for example.

1 Like

Thanks, I just read the exercise again, this function should only take one array and validate cards individually the next one is the one that will take multiple and pass them one by one to this one

Thanks

1 Like