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!