Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Validação do CPF

Estou com dúvida em relação a parte final da validação do CPF. Porque o professor colocou o que o resto tinha que ser maior que 9 para o digito virá 0. Mas nessa lógica o meu código não funcionar.

Somente se eu trocar esse lógica, como trocar resto > 9 para digito > 9 (Eu também acho que faça mais sentido também) . Eu testei com campo com o CPF verdadeiro do meu irmão e o meu, e funcionou. Mas com a lógica do professor nem o meu verdadeiro funcionar.

const calcularTotal = multiplicador => (resultado, numeroAtual) =>
    resultado + numeroAtual * multiplicador--;

const calcularDigito = (parteCPF, multiplicador) => {
    // total = multiplicar dos os números do cpf, começando por 10--
    // resto = total % 11
    // digito = 11 - resto

    const total = parteCPF.reduce(calcularTotal(multiplicador), 0);
    const resto = total % 11;

    let digito = 11 - resto;

    if (resto > 9) {
        digito = 0;
    }

    return digito;
}
4 respostas

Fala ai Bernardo, tudo bem? Tanto no seu exemplo quanto no da aula acho que faltou uma regra:

  • Se o resto da divisão for menor que 2, então o dígito é igual a 0 (Zero).
  • Se o resto da divisão for maior ou igual a 2, então o dígito é igual a 11 menos o resto da divisão (11 - resto).

Nesse caso, no seu if poderia ser em cima do 2 em vez de 9, algo assim:

if (resto < 2) {
        digito = 0;
}

Espero ter ajudado.

Então, eu teria que fazer dois IFs para conseguir o resultado desejado, como eu coloquei abaixo?

if (resto < 2) {
    digito = 0;
}
if (resto >= 2) {
    digito = 11 - resto;
}

Fala Bernardo, não precisaria de dois if, isso porque o valor padrão da variavel já vai ser let digito = 11 - resto.

Caso precise tu altera o valor, senão, segue como está.

Espero ter ajudado.

solução!

Verdade kk Havia esquecido disso. If desnecessário. Obrigado, Matheus!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software