用于 Java 脚本的 CPF 验证代码

我在学什么,在这个地球上的步行

用于 Java 脚本的 CPF 验证代码

下面的代码来自一个经过优化的 Javascript 函数,具有最少的 圈复杂度 我根据文章中的解释得到的行 巴西公积金验证方法 - 个人注册. 在第二个数字化测试仪的计算时略有变化. 而不是从第二个数字开始, 代码从第一个开始并使用值 11 作为乘数. 另一个明显的变化是,为了避免比较知道我们是否在第九位和十进制数字, 我将值零分配给最后一个元素 (指数 10) 减少一个比较.

使用的算法是 1 在文章中进行了解释,并且有一个小技巧可以避免与其他等于 10 这是制作模块 10 其余的.

   // 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);
}

您可以测试此代码 这里.

一个回应

留言

您的电子邮件地址将不会发布. 标记必填的字段 *

此网站使用 Akismet 减少垃圾邮件. 了解如何处理注释数据.