首頁  >  問答  >  主體

一個更聰明的方法是編寫一個函數,該函數使用許多條件語句根據不同的數值範圍傳回增量值

<p>我正在嘗試編寫一個函數,如果輸入在某個數字範圍內,就傳回特定的值。 </p> <p>通常情況下,我會寫一系列的if/else if語句來完成這個任務。但是,我正在處理大量的範圍,所以寫出30多個if/else if語句似乎效率低。 </p> <p>假設我有一個整體範圍的最小和最大數字,並且我想將其分成更小的範圍。對於每個範圍,我想傳回一些值。理想情況下,每個範圍的回傳值將以某個固定數字遞減。 </p> <p>為了提供背景,我正在嘗試使用類似這樣的方法來根據里程數計算一個值。例如,如果里程數在101-120英里之間,費率等於里程數的80%。隨著里程數的增加,百分比會遞減。而且,百分比遞減的數值可以是某個固定數字(例如<code>-0.05</code>)</p> <pre class="brush:php;toolbar:false;">... else if (m >= 101 && m <= 120) return 0.80 else if (m >= 121 && m <= 140) return 0.75 ...</pre> <p>由於每個範圍的返回值存在一種模式,我認為可以以比寫一堆if/else語句更好的方式來完成,但我不確定具體如何做到。有什麼想法嗎? </p>
P粉311464935P粉311464935450 天前522

全部回覆(1)我來回復

  • P粉930534280

    P粉9305342802023-08-18 10:53:55

    你的例子沒有以15遞增;所以,我假設那是打字錯誤。

    我會使用一個函數來解決。 例如:

    (() => {
    
    // 在你的例子中,你有 .95 -> .9 -> .85,因此这从1开始。
    const STARTING_RETURN_VALUE = 1;
    
    // if语句中的递增范围是15
    const INCREMENT = 15;
    
    // 这是每个间隔中返回值递减的值
    const DECREASING_RETURN_VALUE = .05;
    
    const getReturn = (x, increment, starting_return_value, decreasing_return_value) => {
         return starting_return_value - (Math.floor(x/increment)+1)*decreasing_return_value;
    }
    
    console.log(getReturn(29, INCREMENT, STARTING_RETURN_VALUE, DECREASING_RETURN_VALUE));
    
    })();

    回覆
    0
  • 取消回覆