Hello everyone.
I’m a total begginner so please bear with me. I finished this project and I think everything’s working but to be honest I may be missing something (it happened already a few times while I was working on the project). Let me know if you see anything “off” and I look forward to all constructive advice.
Best regards.
pd: Mods, if this post doesn’t belong on this subforum please let me know. Thanks!
//FUNCTION TO VALIDATE CARDS
function validateCred(cards) {
let cardsReverse = cards.slice().reverse();
for (i=0; i < cardsReverse.length; i++ ) {
if (i % 2 != 0) { cardsReverse[i] *= 2; }; if (cardsReverse[i] > 9) { cardsReverse[i] -= 9; };
};
let cardsSum = cardsReverse.reduce((a, b) => a + b);
if (cardsSum % 10 === 0) {
return true;
} else {
return false;
};
};
//FUNCTION TO FIND INVALID CARDS
const findInvalidCards = (cards) =>{
let invalidCard = ;
for (let j = 0; j < cards.length; j++) {
if(validateCred(cards[j]) === false) { invalidCard.push(cards[j]); }
}
return invalidCard;
};
//FUNCTION TO DETECT WHICH COMPANIES ARE INVALID
function idInvalidCardCompanies(invCardArr) {
let companies = ;
let cards = invCardArr.map((item) => {
if (validateCred(item) === false) { if (item[0] === 3) { companies.push('amex'); } else if (item[0] === 4) { companies.push('visa'); } else if (item[0] === 5) { companies.push('mastercard'); } else if (item[0] === 6) { companies.push('discover'); } else { companies.push(`card with number ${item} belongs to an unknown company`);
}
}
});
compNoDupli = companies.filter((item, pos) => {
return companies.indexOf(item) == pos;
});
return compNoDupli;
};
//FUNCTION TO CONVERT CC STRINGS/NUMBERS TO ARRAYS
function convertCc(input) {
newArr = Array.from(String(input), Number);
return newArr;
};
//FUNCTION TO CONVERT INVALID CARD TO VALID
let invalidToValid = (cards) => {
let cardsReverse = cards.slice().reverse();
for (i=0; i < cardsReverse.length; i++ ) {
if (i % 2 != 0) { cardsReverse[i] *= 2; }; if (cardsReverse[i] > 9) { cardsReverse[i] -= 9; };
};
let cardsSum = cardsReverse.reduce((a, b) => a + b);
let modulo = cardsSum % 10;
for (i=0; i < cards.length; i++) {
if (i % 2 != 0 && i > modulo) { cards.splice([i], 1, cards[i] - modulo) break; };
};
return cards;
};