1
resposta

Aula 6 - Atividade 3 - Usando Object.keys

Eu não sei se a logica dessa aula será alterada nas próximas atividades. Mas achei interessante compartilhar uma solução que encontrei para invalidar os campos em branco no formulário. A primeira ideia era aplicar um forEach no objeto "paciente" para verificar se o campo estava em branco e assim poder retornar o erro, evitando aqueles vários if's. O problema (que acabou se tornando solução) é que o forEach percorre um array e não um objeto. Foi então que resolvi pesquisar se não havia uma forma de pegar o objeto e transformá-lo num array. Vi que existem duas formas, uma é usar um for...in e a outra, que acabei usando por conta da semântica, é usar o Object.keys. Acabou que consegui deixar o código sucinto e prático, da seguinte forma:

function validaPaciente(paciente){

    var erros = [];

    Object.keys(paciente).forEach(function (elemento) {
        if(paciente[elemento] == 0){
            erros.push("O valor do " + elemento + " não pode ficar em branco");
        }
    }); 

    if(!validaPeso(paciente.peso)) {
        erros.push("Peso é inválido");
    }

    if(!validaAltura(paciente.altura)) {
        erros.push("Altura é inválida");
    }

    return erros;
}

Se por algum motivo quiséssemos usar o for...in, o código ficaria assim:

function validaPaciente(paciente){

    var erros = [];

    for (var elemento in paciente) {
        erros.push("O valor do " + elemento + " não pode ficar em branco");
    }

    if(!validaPeso(paciente.peso)) {
        erros.push("Peso é inválido");
    }

    if(!validaAltura(paciente.altura)) {
        erros.push("Altura é inválida");
    }

    return erros;
}

Testei as duas formas e funcionaram muito bem!

1 resposta

Oi, Luis, tudo bem?

A sua observação é bem importante para que usuário seja avisado que está tentando enviar campo vazio para o formulário. O professor irá adicionar essa regra à função validaPaciente Mas o interessante que você fez de uma forma mais simples, com menos encadeamentos de if...else, muito legal!

E obrigada por compartilhar!