Javascript 如何将这些“if”语句转换为算法

Javascript 如何将这些“if”语句转换为算法,javascript,algorithm,Javascript,Algorithm,我试图将这些“if”语句转换成一个算法,这样我就可以有更多的阶段,而不是限制在10个阶段。我将如何转换它?我就是不懂逻辑 函数getStagekm{ 如果km>2和km4和公里数6和公里数8和公里数10和公里数12和公里数14和公里数16和公里数18和公里数20和公里数>1+1,10; } console.loggetStage2.1;//2. console.loggetStage3;//2. console.loggetStage4;//4也许你在找数学课 函数getStagekm{ 返

我试图将这些“if”语句转换成一个算法,这样我就可以有更多的阶段,而不是限制在10个阶段。我将如何转换它?我就是不懂逻辑

函数getStagekm{ 如果km>2和km<4{ 返回1; } 否则,如果公里数>4和公里数<6{ 返回2; } 否则,如果公里数>6和公里数<8{ 返回3; } 否则,如果公里数>8和公里数<10{ 返回4; } 否则,如果公里数>10和公里数<12{ 返回5; } 否则,如果公里数>12和公里数<14{ 返回6; } 否则,如果公里数>14和公里数<16{ 返回7; } 否则,如果公里数>16和公里数<18{ 返回8; } 否则,如果公里数>18和公里数<20{ 返回9; } 否则,如果公里数>20和公里数<22{ 返回10; }
} 你可以把km的下限值除以2加1

10是上限

函数getStagekm{ 返回Math.minkm>>1+1,10; } console.loggetStage2.1;//2. console.loggetStage3;//2.
console.loggetStage4;//4也许你在找数学课

函数getStagekm{ 返回Math.floorkm/2 } console.loggetStage2; // 1 console.loggetStage10; // 5 console.loggetStage11;
//5你可以用数学来做这件事。不需要循环或条件

请注意,您的输入间隔以2步为单位增加,输出以1步为单位增加。这让我觉得也许我们应该把公里除以2。 因为我们总是想要一个整数答案,所以我们可以使用floor函数

一些例子: 楼层3/2=1 楼层4.1/2=2 等等

根据您要为边缘情况返回的内容,如果km=2或km=4,或2的任意倍数,该怎么办?我们可能在这里结束了。如果希望在k=4时返回1,在k=6时返回2,等等,则需要做更多的工作


*一般来说:*如果你在处理数字,并且你发现自己写了很多案例,你通常可以使用一些简单的数学运算符组合来计算结果。对于此类问题,请尝试思考您的输入/输出对,以及它们之间的关系。

尝试类似的方法。这是一种通用解决方案,不仅适用于2*n系列

常量阶段=[2,4,6,8,10,13,15,16,20]//应该订购。否则先排序。 const getStage=km=>stages.indexOfstages.findi=>kmconsole.loggetStage22//-指数中的1,那么像4这样的值呢。在这种情况下,返回什么?如果km>2&&km<4,这看起来像是写ifkm==3Stage 2的迂回方式,因为它小于6@RichardJacobs不根据这些语句4>4为false,因此它不会返回任何内容。请尝试返回Math.floorkm/2;>>1真是晦涩难懂。我认为你应该写floorkm/2