Ein intelligenterer Ansatz wäre, eine Funktion zu schreiben, die viele bedingte Anweisungen verwendet, um inkrementelle Werte basierend auf verschiedenen numerischen Bereichen zurückzugeben
P粉311464935
P粉311464935 2023-08-17 23:18:09
0
1
533
<p>Ich versuche eine Funktion zu schreiben, die einen bestimmten Wert zurückgibt, wenn die Eingabe innerhalb eines bestimmten Zahlenbereichs liegt. </p> <p>Normalerweise würde ich eine Reihe von if/else if-Anweisungen schreiben, um diese Aufgabe zu erfüllen. Allerdings habe ich es mit einer großen Anzahl von Bereichen zu tun, sodass das Schreiben von mehr als 30 if/else if-Anweisungen ineffizient erscheint. </p> <p>Angenommen, ich habe eine Mindest- und Höchstzahl für einen Gesamtbereich und möchte ihn in kleinere Bereiche aufteilen. Für jeden Bereich möchte ich einige Werte zurückgeben. Im Idealfall würde der Rückgabewert für jeden Bereich um eine feste Zahl dekrementiert. </p> <p>Um den Kontext bereitzustellen, versuche ich, mit etwas wie diesem einen Wert basierend auf der Kilometerleistung zu berechnen. Liegt der Kilometerstand beispielsweise zwischen 101 und 120 Meilen, beträgt der Satz 80 % des Kilometerstands. Der Prozentsatz nimmt mit zunehmender Kilometerleistung ab. Darüber hinaus kann der Wert der prozentualen Verringerung eine feste Zahl sein (z. B. <code>-0,05</code>)</p> <pre class="brush:php;toolbar:false;">... sonst wenn (m >= 101 && m <= 120) 0,80 zurückgeben sonst wenn (m >= 121 && m <= 140) 0,75 zurückgeben ...</pre> <p>Da es für jeden Bereich ein Muster im Rückgabewert gibt, denke ich, dass dies besser möglich ist, als eine Reihe von if/else-Anweisungen zu schreiben, aber ich weiß nicht genau, wie. Irgendwelche Ideen? </p>
P粉311464935
P粉311464935

Antworte allen(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));

})();
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage