一個更聰明的方法是編寫一個函數,該函數使用許多條件語句根據不同的數值範圍傳回增量值
P粉311464935
P粉311464935 2023-08-17 23:18:09
0
1
545
<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粉311464935
P粉311464935

全部回覆(1)
P粉930534280

你的例子沒有以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));

})();
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板