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

我正在尝试编写一个函数,如果输入在某个数字范围内,就返回特定的值。

通常情况下,我会写一系列的if/else if语句来完成这个任务。但是,我正在处理大量的范围,所以写出30多个if/else if语句似乎效率低下。

假设我有一个整体范围的最小和最大数字,并且我想将其分成更小的范围。对于每个范围,我想返回一些值。理想情况下,每个范围的返回值将以某个固定数字递减。

为了提供背景,我正在尝试使用类似于这样的方法来根据里程数计算一个值。例如,如果里程数在101-120英里之间,费率等于里程数的80%。随着里程数的增加,百分比会递减。而且,百分比递减的数值可以是某个固定数字(例如-0.05

... else if (m >= 101 && m <= 120) return 0.80 else if (m >= 121 && m <= 140) return 0.75 ...

由于每个范围的返回值存在一种模式,我认为可以以比写一堆if/else语句更好的方式来完成,但我不确定具体如何做到。有什么想法吗?

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)); })();
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!