Código de validación CPF para Javascript
O código abaixo é de uma função em Javascript otimizada para ter o menor numero de Complejidad ciclomática líneas que obtuve basadas en la explicación presente en el artículo Método brasileño de validación de la ACB - Registro individual. Tiene un ligero cambio en el momento del cálculo del segundo probador digitalizado. En lugar de comenzar con el segundo dígito, El código comienza con el primero y utiliza el valor 11 como multiplicador. Otro cambio notable es que para evitar la necesidad de comparación saber si estamos en el noveno dígito y decimo, Asigno el valor cero al último elemento (índice 10) para reducir una comparación más.
El algoritmo utilizado es el 1 explicado en el artículo y hay un pequeño truco para evitar comparar con el resto igual a 10 que es hacer el módulo 10 del 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);
}
Puede probar este código aquí.
Una respuesta
[…;] Versión de Javascript. […;]