Disons que j'ai un tableau comme suit:la plus efficace façon d'obtenir la chaîne avec la plus haute priorité sur un tableau
var numArray = [ 1, 2, 1, 2, 1, 1, 3, 2, 1, 3 ];
Je pourrais facilement obtenir la valeur maximale hors de lui en utilisant:
Math.max.apply(Math, array);
Mais si je devais un tableau comme suit:
var stringArray = [ "Foo", "Very Foo", "Not So Foo",
"Foo", "Very Foo", "Extremely Foo" ];
Alors quelle serait la façon d'obtenir la valeur maximale la plus efficace o Tout d'abord, la valeur maximale étant, par ordre d'importance: "Extrêmement Foo"> "Très Foo"> "Foo"> "Pas So Foo"
La première chose qui vint à l'esprit était iterating à travers le tableau avec un boucle et comparer manuellement en tant que tel:
var maxValue = "";
for(var i = 0; i < stringArray.length; i++) {
if(maxValue != "Extremely Foo") {
if(maxValue != "Very Foo") {
if(maxValue != "Foo") {
maxValue = stringArray[i];
}
else if(stringArray[i] != "Not So Foo") {
maxValue = stringArray[i];
}
}
else if(stringArray[i] == "Extremely Foo") {
maxValue = stringArray[i];
break;
}
}
else { break; }
}
Alors je pensais à faire un ENUM pour donner à chaque autre chaîne une valeur:
enum Foos {
Not So Foo = 0,
Foo = 1,
Very Foo = 2,
Extremely Foo = 3,
}
et en utilisant la valeur ENUM en tant que méthode de comparaison à utiliser plus de opérateur logique à la place.
Ma question est: Quelle est la meilleure façon d'atteindre ce que j'essaie d'atteindre? L'une des deux façons dont j'ai parlé ou est-ce qu'il y a une façon différente de le faire en Javascript qui est plus efficace?
J'adore le tableau. Réduire l'utilisation ici. Très propre et cela signifie que je n'ai pas à modifier mon tableau d'origine avec une sorte. – snaplemouton
Pensez-vous qu'il serait possible cependant de casser l'exécution de réduire si nous trouvons la plus haute valeur possible "Extrêmement Foo"? Considérer finir l'itération à travers le tableau serait inutile. – snaplemouton
Vous ne pouvez pas sortir du tableau # réduire, mais vous pouvez utiliser l'ancienne pour ou les boucles while pour rompre quand quelque chose est trouvé. Cependant, si nous parlons de tableaux courts, que vous ne itérez pas tout le temps, et que vous ne vous attendez pas à ce que "Extrêmement Foo" apparaisse dans une très haute fréquence, l'inutilité ne sera pas si fréquente. –