# Credit Card Checker

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

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:

}
``````

}

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

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.