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

Função para calcular os IMC's, como diminuir o código?

Querendo exercitar o que já foi aprendido no curso de Lógica e ir além do proposto pelo instrutor eu quis tentar criar uma função para imprimir todos os IMC's dos pacientes.

Porém achei o código um pouco extenso e gostaria de saber alguma forma de deixar esse código mais enxuto.

Obrigado!


    // calculando o IMC automaticamente

function calculaImc(paciente) {

    var tdPeso = paciente.querySelector(".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector(".info-altura");
    var altura = tdAltura.textContent;

    var imc = peso / (altura * altura);

    var tdImc = paciente.querySelector(".info-imc");

    tdImc.textContent = imc;

    var pesoValido = true;
    var alturaValida = true;

    if (peso <= 0 || peso >= 300) {

        alert("Peso inválido!");
        pesoValido = false;
        tdImc.textContent = "Peso Inválido";
    }

    if (altura <= 0 || altura >= 3.00) {

        alert("Altura inválida!");
        alturaValido = false;
        tdImc.textContent = "Altura Inválida";

    }

}

var primeiroPaciente = document.querySelector("#primeiro-paciente");
var segundoPaciente = document.querySelector("#segundo-paciente");
var terceiroPaceitne = document.querySelector("#terceiro-paciente");
var quartoPaciente = document.querySelector("#quarto-paciente");
var quintoPaciente = document.querySelector("#quinto-paciente");

calculaImc(primeiroPaciente);
calculaImc(segundoPaciente);
calculaImc(terceiroPaceitne);
calculaImc(quartoPaciente);
calculaImc(quintoPaciente);
2 respostas

Na aula seguinte o instrutor já mostrou como realizar o código com FOR.

var pacientes = document.querySelectorAll(".paciente");

for(var i = 0 ; i < pacientes.length ; i++) {

    var paciente = pacientes[i];

    var tdPeso = paciente.querySelector(".info-peso");
    var peso = tdPeso.textContent;

    var tdAltura = paciente.querySelector(".info-altura");
    var altura = tdAltura.textContent;

    var imc = peso / (altura * altura);

    var tdImc = paciente.querySelector(".info-imc");

    tdImc.textContent = imc.toFixed(2);
}

Mesmo assim, de qual outra forma poderíamos percorrer todos os pacientes? Ou o FOR seria o caminho mais indicado para deixar o código menor?

solução!

Boa noite, Guilherme! Como vai?

Mais pra frente vc vai ver que existe uma outra forma de fazer laços de repetição! Contudo, a outra forma que vc irá aprender é compatível com o for e também verá que na maioria esmagadora das vezes escolher entre um ou outro vai mais do gosto do desenvolvedor!

Então, é só aguardar os capítulos do seu aprendizado e mandar ver nos seus estudos!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!