J'ai un large éventail de fonctionnalités avec les propriétés p et u. Je veux trouver le plus petit et le plus haut p et u dans le tableau et créer cette déclaration de commutateur dans une boucle. Cela fonctionne environ 99,9% du temps. Toutefois. J'ai un ensemble de données où les valeurs max et min sont identiques, même si les valeurs sont réparties uniformément et que la moyenne n'est pas la même. Stumped.Fallthrough problème dans l'instruction de changement Javascript
switch(true) {
case p > max_p:
max_p = p;
case u > max_u:
max_u = u;
case p < min_p:
min_p = p;
case u < min_u:
min_u = u;
}
Je cours à travers la boucle dans Firebug et peut voir que MAX_U a parfois mis à jour si u < MAX_U. Par exemple, u = 0,066, max_u = 0,088. Pycharm me parle d'un problème technique, mais l'énoncé fonctionne bien pour tous les autres jeux de données que je lui propose.
Je peux diviser l'instruction en deux. La perte de performance est mineure mais j'aimerais comprendre comment cela pourrait arriver.
Merci, Dennis
modifier:
divisé en deux ensemble de données fonctionne déclaration tout à fait bien sans interruption dans la déclaration.
switch(true) {
case p > max_p:
max_p = p;
case p < min_p:
min_p = p;
}
switch(true) {
case u > max_u:
max_u = u;
case u < min_u:
min_u = u;
}
edit: J'ai accepté la réponse qui fonctionne, mais je suis toujours perplexe pourquoi quelque chose comme cela se passerait-il.
Pour ce que ça vaut la peine, vous pouvez simplement utiliser [ 'Math.max'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Global_Objects/Math/max). 'max_u = Math.max (max_u, u)' –
Vous devriez avoir 'break;' après chaque 'case' sauf si cela a été omis. –
@VinnyMannello mais la rupture ne serait-elle pas un problème puisque je compare 2 propriétés? En outre, la première propriété sera plus grande que la plus petite et plus petite que la plus grande et pourrait aussi être la plus grande ou la plus petite. –