簡體   English   中英

檢查多個整數范圍時替換多個if語句

[英]Replace multiple if statements when checking for multiple integer ranges

我想通過移除所有這些if statements (如果可能的話),一個函數和/或所有可用於移除那些if重復發生的事物來簡化此代碼。

我需要檢查多個整數范圍,並根據用戶得分需要設置兩個變量。

這是我的代碼:

if (userScore <= 40)
{
    object.setMinValue(0);
    object.setMaxValue(40);
}

if (userScore > 40 && userScore <= 65)
{
    object.setMinValue(41);
    object.setMaxValue(65);
}

if (userScore > 65 && userScore <= 85)
{
    object.setMinValue(66);
    object.setMaxValue(85);
}

if (userScore > 85 && userScore <= 95)
{
    object.setMinValue(86);
    object.setMaxValue(95);
}

if (userScore > 95 && userScore <= 100)
{
    object.setMinValue(96);
    object.setMaxValue(100);
}

我認為可以使用switch語句,因為有很多if statements檢查相同的變量,但是有沒有更簡單有效的解決方案?

謝謝

首先,在JavaScript中使用object作為變量名不是很好。 我改用“ o”。 從我的代碼可以看出,代碼塊中的值可以從條件語句派生:

var scoreLimits = [0,40,65,85,95,100];

for(var i = 1; i < scoreLimits.length; i++)
{
    var limit = scoreLimits[i];
    if ( userScore <= limit )
    {
        o.setMinValue(scoreLimits[i-1]);
        o.setMaxValue(limit);
        break;
    }
}

這是一個工作示例: http : //jsfiddle.net/xsasjs6t/

而且,如果您希望它運行得非常快,則可以為所有可能的userScore值范圍預先計算一個映射,並在以后使用:

var mapper = {};
for(var i = 0; i < scoreLimits.length - 1; i++)
{
    var limits = { minValue : scoreLimits[i], maxValue : scoreLimits[i+1] };
    for (var j = scoreLimits[i] + 1; j <= scoreLimits[i + 1]; j++)
    {
        mapper[j] = limits;
    }
}

工作示例: http : //jsfiddle.net/8cqwp4fz/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM