Codigo de validação de CPF para Javascript
O código abaixo é de uma função em Javascript otimizada para ter o menor numero de complexidade ciclomática linhas que consegui baseado na explicação presente no artigo Algoritimo de validação de CPF brasileiro – Cadastro de Pessoa Física. Ele tem uma ligeira alteração no momento do cálculo do segundo digitido verificador. Ao invés de começar pelo segundo algarismo, o codigo começa pelo primeiro e usa o valor 11 como multiplicador. Outra alteração visivel é que para evitar a necessidade de comparação para saber se estamos no nono e decimo digitos, atribuo o valor zero ao ultimo elemento (indice 10) para reduzir mais uma comparação.
O algoritmo utilizado é o método 1 explicado no artigo e há um pequeno truque para evitar a comparação com o resto igual a 10 que é fazer o módulo de 10 do resto.
// Codigo que valida um CPF informado quanto a validade de seus dígitos verificadores.
const validarCpf = (cpf) => {
if (cpf.length !== 11) { // Supõe-se já vir filtrado o valor
return false;
}
let elementos = cpf.split(''); // convertendo a string em array
elementos[10] = 0; // Forçando ao valor da ultima multiplicacao ser zero
let somaA = 0;
let somaB = 0;
elementos.reduce(function(i, valor, indice) {
let multiplicador = 11 - indice;
somaB += (valor * multiplicador);
somaA += (valor * (multiplicador > 2 ? multiplicador - 1 : 0));
}, somaA);
let moduloA = ((somaA * 10) % 11) % 10;
let moduloB = ((somaB * 10) % 11) % 10;
return cpf.replace(/\d{9}(\d{2})$/g, '$1') == ("" + moduloA + moduloB);
}
Você pode testar esse código aqui.
One Response
[…;] Versão Javascript. […;]