biblioteca-cartao-fc
Version:
Validador de cartão de crédito
42 lines (39 loc) • 1.62 kB
JavaScript
module.exports.cardValidator = function cardValidator(cardNumber) {
let arrayNumber = [];
if( typeof cardNumber === 'undefined'){//Verifica se foi preenchido o campo
return 'Erro';
}
else if (isNaN(cardNumber)) {
return 'Erro';
}
else if (cardNumber.length < 13 || cardNumber.length > 16) {
return 'Erro';
}else{
// separar caracteres e inverter o array
arrayNumber=cardNumber.split('');
arrayNumber.reverse();
for(var i = 0; i < arrayNumber.length; i++){
if((i+1)%2 === 0){//Verifica se a posição do Array é Par
var num = parseInt(arrayNumber[i])*2;//Multiplica por 2
arrayNumber[i]= num.toString();//Converte em número a string da posição do array
if(arrayNumber[i] > 9){//Verifica se a multiplicação do número do array é maior que 9, se for separa os caracteres e soma eles.
arrayNumber[i] = parseInt(arrayNumber[i].charAt(0)) + parseInt(arrayNumber[i].charAt(1));
}else{//Se não for maior salva o conteudo na mesma posição transformando ele em numerico
arrayNumber[i]=parseInt(arrayNumber[i]);
}
}
else{//Para posições impares salva apenas na mesma posição transformando em númerico.
arrayNumber[i]=parseInt(arrayNumber[i]);
}
}
var total = 0;
for(var i = 0; i < arrayNumber.length; i++){//Faz um loop no array para somar
total = total + arrayNumber[i];
}
if(total%10 == 0 && total !==0){//Verifica se o resultado é um muliplo de 10.
return true;
}else{
return false;
}
}
};