首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在各种函数中使用相同的if-else逻辑。

在各种函数中使用相同的if-else逻辑。
EN

Stack Overflow用户
提问于 2022-10-15 14:19:52
回答 1查看 49关注 0票数 1

我有多个函数,取决于程序中相同的if-else逻辑。我在他们每一个人里面都用这个“如果-否则”的逻辑。由于这是太多的代码重复if-否则的结构,我想把我的小程序的形状变成一个更紧凑的结构,减少使用if-else结构。

以下是我的功能:

代码语言:javascript
复制
 function getBatteryColor(batteryLevel) {
    var batteryColor = '#2CB65C';
  // The if-else structure
    if (batteryLevel >= 75) {
        batteryColor = '#2CB65C';
    } else if (batteryLevel < 75 && batteryLevel > 50) {
        batteryColor = '#8FD601';
    } else if (batteryLevel <= 50 && batteryLevel > 25) {
        batteryColor = '#FFBF01';
    } else if(batteryLevel <= 25 && batteryLevel > 10) {
        batteryColor = '#FD894B';
    }else{
        batteryColor = '#FF554B';
    }
    return batteryColor;
}

function changeBatteryIcon(batteryLevel, iconId){
   // Define some battery icons
    var fullBatteryIcon = // full battery icon
    var threeQuarterIcon = // three quarter battery icon
    var halfBatteryIcon = // half battery icon
    var quarterBatteryIcon = // quarter battery icon
    var emptyBatteryIcon = // empty battery icon
    var batteryIcon;

   // Same if-else structure here
    if (batteryLevel >= 75) {
        batteryIcon = fullBatteryIcon;
    } else if (batteryLevel < 75 && batteryLevel > 50) {
        batteryIcon = threeQuarterBatteryIcon;
    } else if (batteryLevel <= 50 && batteryLevel > 25) {
        batteryIcon = halfBatteryIcon;
    } else if(batteryLevel <= 25 && batteryLevel > 10) {
        batteryIcon = quarterBatteryIcon;
    }else{
        batteryIcon = emptyBatteryIcon;
    }
    $('#' + iconId).replaceWith(batteryIcon)
}

/* .
   .
   .
   A couple of more functions like that, using the same if-else logic.
*/

如果-否则重复,有什么可能的方法来减少这种情况?我可以在一个地方(也许是在一个函数中)拥有这个if--否则逻辑,然后围绕它编写我的其他函数吗?或者,也许我可以编写一个巨大的函数(这可能不是一个好主意)来收集其他函数的所有功能吗?

我是javascript的新手。我想也许一个“允诺结构\异步函数”能帮上忙。但我对这个话题也不太精通。谢谢你提前提供帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-15 14:32:29

您可以简化条件,并返回表示状态的字符串,并将对象用于各种值。

代码语言:javascript
复制
function getBatteryState(batteryLevel) {
    if (batteryLevel >= 75) return 'full';
    if (batteryLevel > 50) return 'moreThanHalf';
    if (batteryLevel > 25) return 'moreThanQuarter';
    if (batteryLevel > 10) return 'quarterOrLess';
    return 'empty';
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74080232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档