Une approche plus intelligente consisterait à écrire une fonction qui utilise de nombreuses instructions conditionnelles pour renvoyer des valeurs incrémentielles basées sur différentes plages numériques.
P粉311464935
P粉311464935 2023-08-17 23:18:09
0
1
530
<p>J'essaie d'écrire une fonction qui renvoie une valeur spécifique si l'entrée se situe dans une certaine plage de nombres. </p> <p>Normalement, j'écrirais une série d'instructions if/else if pour accomplir cette tâche. Cependant, j'ai affaire à un grand nombre de plages, donc écrire plus de 30 instructions if/else if semble inefficace. </p> <p>Supposons que j'ai un nombre minimum et maximum pour une plage globale et que je souhaite la diviser en plages plus petites. Pour chaque plage, je souhaite renvoyer certaines valeurs. Idéalement, la valeur de retour pour chaque plage serait décrémentée d'un nombre fixe. </p> <p>Pour fournir un contexte, j'essaie de calculer une valeur basée sur le kilométrage en utilisant quelque chose comme ceci. Par exemple, si le kilométrage est compris entre 101 et 120 miles, le taux est égal à 80 % du kilométrage. Le pourcentage diminue à mesure que le kilométrage augmente. De plus, la valeur du pourcentage de diminution peut être un nombre fixe (tel que <code>-0,05</code>)</p> <pre class="brush:php;toolbar:false;">... sinon si (m >= 101 && m <= 120) renvoie 0,80 sinon si (m >= 121 && m <= 140) renvoie 0,75 ...</pré> <p>Comme il existe un modèle dans la valeur de retour pour chaque plage, je pense que cela peut être fait d'une meilleure manière que d'écrire un tas d'instructions if/else, mais je ne sais pas exactement comment. Des idées? </p>
P粉311464935
P粉311464935

répondre à tous(1)
P粉930534280

Votre exemple n'incrémente pas de 15, donc je suppose que c'est une faute de frappe.

Je vais utiliser une fonction pour le résoudre. Par exemple :

(() => {

// 在你的例子中,你有 .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));

})();
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal