suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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>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粉311464935P粉311464935557 Tage vor587

Antworte allen(1)Ich werde antworten

  • P粉930534280

    P粉9305342802023-08-18 10:53:55

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

    Antwort
    0
  • StornierenAntwort