一个更聪明的方法是编写一个函数,该函数使用许多条件语句根据不同的数值范围返回增量值
P粉311464935
P粉311464935 2023-08-17 23:18:09
0
1
528
<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));

})();
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板