Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

122
Visualizações
Calculate BMI JavaScript switch

I am doing a standard task with codewares: Write function bmi that calculates body mass index (bmi = weight / height2).

Here is my solution:

function bmi(weight, height) {
  let bmi = weight / (height ** 2)

  if (bmi <= 18.5) {

    return "Underweight";
  } else if (bmi <= 25.0) {

    return "Normal"
  } else if (bmi <= 30.0) {

    return "Overweight"
  } else if (bmi > 30) {
    return "Obese"
  }
}

console.log(bmi(80, 1.80))

I have a question: is it possible to solve this problem with the help of a switch? Because I tried it in different ways and in the console I have undefined:

function bmi(weight, height) {

  let bmi = weight / (height ** 2)

  let c = "Normal"

  switch (bmi) {
    case "Underweight":
      bmi <= 18.5;
      break;

    case "Normal":
      bmi <= 25.0;
      break;

    case "Overweight":
      bmi <= 30.0;
      break;

    default:
      return;
  }
}
console.log(bmi(80, 1.80))

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

(Thanks to user derpirscher for pointing out I had provided a completely incorrect answer. I've updated a corrected answer below.)

Unfortunately this syntax for switch statements, where your case is a complex comparison against the expression, is not supported in JS. Cases are simply checked against the expression for a simple match. While one could do something like this:

function bmi(weight, height) {

  let bmi = weight / (height ** 2)

  let c = "Normal"

  switch (true) {
    case bmi <= 18.5:
      c = "Underweight";
      break;

    case bmi <= 25.0:
      c = "Normal";
      break;

    case bmi <= 30.0:
    
      c = "Overweight";
      break;

    default:
      c = "Obese"

  }
  return c;
}

console.log(bmi(8, 1.80))
console.log(bmi(80, 1.80))
console.log(bmi(800, 1.80))

It is using the switch for a case different than its intended purpose. This is not necessarily a readable or expressive way of writing this-- I think your original approach with the if...else is probably preferable to a switch-based approach.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda