【发布时间】:2021-09-05 06:28:30
【问题描述】:
我目前正在使用 html css 和 javascipt(使用 jquery 库)进行体重指数计算。在 javascript 或其他编程语言中,如何简化多个嵌套的 if else 语句?该代码运行良好,但我很好奇另一种有效的方法(可能是数组或列表?)来减少工作量。
if (age < 18){
if (age == 9){
if (bmi < 14){
$(".Classification").text(underweight)
}
else if (bmi < 18.6){
$(".Classification").text(healthy)
}
else if (bmi < 21){
$(".Classification").text(overweight)
}
else if (bmi >= 21){
$(".Classification").text(obese)
}
}
else if (age == 10){
if (bmi < 14.2){
$(".Classification").text(underweight)
}
else if (bmi < 19.4){
$(".Classification").text(healthy)
}
else if (bmi < 22.2){
$(".Classification").text(overweight)
}
else if (bmi >= 22.2){
$(".Classification").text(obese)
}
}
else if (age == 11){
if (bmi < 14.6){
$(".Classification").text(underweight)
}
else if (bmi < 20.2){
$(".Classification").text(healthy)
}
else if (bmi < 23.2){
$(".Classification").text(overweight)
}
else if (bmi >= 23.2){
$(".Classification").text(obese)
}
}
else if (age == 12){
if (bmi < 15){
$(".Classification").text(underweight)
}
else if (bmi < 21){
$(".Classification").text(healthy)
}
else if (bmi < 24.2){
$(".Classification").text(overweight)
}
else if (bmi >= 24.2){
$(".Classification").text(obese)
}
}
else if (age == 13){
if (bmi < 15.4){
$(".Classification").text(underweight)
}
else if (bmi < 21.8){
$(".Classification").text(healthy)
}
else if (bmi < 25.2){
$(".Classification").text(overweight)
}
else if (bmi >= 25.2){
$(".Classification").text(obese)
}
}
else if (age == 14){
if (bmi < 16){
$(".Classification").text(underweight)
}
else if (bmi < 22.6){
$(".Classification").text(healthy)
}
else if (bmi < 26){
$(".Classification").text(overweight)
}
else if (bmi >= 26){
$(".Classification").text(obese)
}
}
else if (age == 15){
if (bmi < 16.6){
$(".Classification").text(underweight)
}
else if (bmi < 23.4){
$(".Classification").text(healthy)
}
else if (bmi < 26.8){
$(".Classification").text(overweight)
}
else if (bmi >= 26.8){
$(".Classification").text(obese)
}
}
else if (age == 16){
if (bmi < 17.2){
$(".Classification").text(underweight)
}
else if (bmi < 24.2){
$(".Classification").text(healthy)
}
else if (bmi < 27.6){
$(".Classification").text(overweight)
}
else if (bmi >= 27.6){
$(".Classification").text(obese)
}
}
else if (age == 17){
if (bmi < 17.8){
$(".Classification").text(underweight)
}
else if (bmi < 24.8){
$(".Classification").text(healthy)
}
else if (bmi < 28.2){
$(".Classification").text(overweight)
}
else if (bmi >= 28.2){
$(".Classification").text(obese)
}
}
else{
$(".Classification").text("age out of range")
}
} else if (age >= 18) {
if (bmi < 18.5){
$(".Classification").text(underweight)
}
else if (bmi < 25){
$(".Classification").text(healthy)
}
else if (bmi < 30){
$(".Classification").text(overweight)
}
else if (bmi < 35){
$(".Classification").text(obeseI)
}
else if (bmi < 40){
$(".Classification").text(obeseII)
}
else if (bmi >= 40){
$(".Classification").text(obeseIII)
}
} else {
$(".Classification").text("null")
}
【问题讨论】:
-
当您的代码有效时,您可以尝试:codereview.stackexchange.com
-
tbh,如果我正在为我的一位团队成员查看此代码,我最初会遇到嵌套 if/else 语句的问题,但在完成它之后,我会意识到这可能是“可悲的”最优雅的方式。代码审查的一部分是阅读和理解代码的能力。在这种情况下......它易于阅读和理解。因为它基本上是“数学”,所以评论数学计算可能会很好,以便其他人理解它。否则看起来很好。
-
将年龄/分类放入一个函数并从该函数返回文本将大大减少
$(".Classification").text(条目并使其可重用(因此它可以进入.Classification以外的其他内容)。 -
定义年龄/范围的对象可能会使代码基本上更短且更易于维护(更容易添加/更改值),但可能难以阅读/理解。
标签: javascript jquery arrays list if-statement