-
-
Save 1moita/0d31bdd18dc2e379004147afc28f46f4 to your computer and use it in GitHub Desktop.
Codecademy Credit Card Checker PRoject
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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: | |
//function for calculating module | |
function validateCred (arr) { | |
let tempArr = [...arr]; | |
//to reverse the array | |
let reversedArr = tempArr.reverse(); | |
//to iterate trough every other index | |
for (let i=1; i<reversedArr.length; i+=2) { | |
if (reversedArr[i]<=4) reversedArr[i] = reversedArr[i] * 2 | |
else if (reversedArr[i]>4) reversedArr[i] = reversedArr[i] * 2 - 9; | |
} | |
//to sum the array and modulo | |
let sum = reversedArr.reduce((a, b) => a + b); | |
let modulo = sum % 10; | |
return modulo | |
}; | |
//function to check the code | |
function findInvalidCards (nestedArr) { | |
let invalidCards = []; | |
for (let j=0; j<nestedArr.length; j++) { | |
validateCred(nestedArr[j]); | |
if (validateCred(nestedArr[j]) !=0 ) { | |
invalidCards.push(nestedArr[j]); | |
} | |
}; | |
return invalidCards; | |
}; | |
console.log('Invalid credit card numbers:') | |
console.log(findInvalidCards(batch)); | |
//function to match the number with the bank | |
function idInvalidCardCompanies (invalidArr) { | |
let companyArr = []; | |
for (let k=0; k<invalidArr.length; k++) { | |
switch (invalidArr[k][0]) { | |
case 3: | |
if (companyArr.indexOf('Amex (American Express)') === -1) companyArr.push('Amex (American Express)'); | |
break; | |
case 4: | |
if (companyArr.indexOf('Visa') === -1) companyArr.push('Visa'); | |
break; | |
case 5: | |
if (companyArr.indexOf('Mastercard') === -1) companyArr.push('Mastercard'); | |
break; | |
case 6: | |
if (companyArr.indexOf('Discover') === -1) companyArr.push('Discover'); | |
break; | |
default: console.log('Company not found'); | |
} | |
} | |
return companyArr; | |
} | |
console.log('Credit card companies issuing faulty numbers:') | |
console.log(idInvalidCardCompanies(batch)); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment