Credit Card Checker

Please help! I don’t understand what is wrong(((( return empty massive :(((

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:

let validateCard = arr => {

let reserveArr = [arr[arr.length-1]];

for(let i = arr.length - 2; i >= 0; i -=2){

if(arr[i] * 2 > 9){

  let prod = arr[i] * 2 - 9;

   reserveArr.push(prod);

} else if(arr[i] * 2 < 9){

  reserveArr.push(arr[i] * 2);

}

}

for(let i = arr.length - 3; i >= 0; i -= 2){

reserveArr.push(arr[i]);

}

let sum = 0;

for(let i = 0; i < reserveArr.length; i++){

sum += reserveArr[i];

}

if(sum % 10 === 0){

return true;

} else {

return false;

}

}

let findInvalidCards = nestArr => {

let invalidCards = ;

for(let i = 0; i < nestArr.length; i++){

if(validateCard(nestArr[i]) === false) {

  invalidCards.push(nestArr[i]);

}

return invalidCards;

}

}

let idInvalidCardCompanies = nestArr => {

let listInvalids = ;

for(let i = 0; i < nestArr.length; i++){

let firstDiggit = nestArr[i][0];

switch (firstDiggit) {

  case 3: 

  listInvalids.push('Amex');

  break;

  case 4:

  listInvalid.push('Visa');

  break;

  case 5:

  listInvalid.push('Mastercard');

  break;

  case 6:

  listInvalid.push('Discover');

  break;

  default:

  listInvalid.push('Company not found');

}

}

return listInvalids.filter((a, b) => listInvalids.indexOf(a) === b);

}

console.log(idInvalidCardCompanies(findInvalidCards(batch)));

That can just be an, else without a condition. We already know it is not greater than 9, so leave it alone.

okey, but it isn’t the solution :frowning:

There are hundreds of them already posted. Compare yours to some of them. I was merely pointing out a possible issue, namely, that 9 is ignored, and that is caused by the line pointed out.

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