Maison  >  Article  >  interface Web  >  Pour trouver la valeur maximale d'un tableau en js, quelle méthode utilisez-vous, intelligente ou stupide ?

Pour trouver la valeur maximale d'un tableau en js, quelle méthode utilisez-vous, intelligente ou stupide ?

yulia
yuliaoriginal
2018-09-08 17:24:231782parcourir

La raison de la rédaction de cet article

J'utilise rarement des algorithmes dans les projets sur lesquels je travaille actuellement, donc naturellement je ne suis pas familier avec cet aspect. Dans un codage récent, j'ai rencontré le besoin d'obtenir la valeur maximale d'un tableau. A cette époque, j'ai inconsciemment pensé à la fonction sort() de js. Maintenant que j'y pense, c'est vraiment un "péché". à ce moment-là, je me sentais un peu fier dans mon cœur : "Eh bien, j'utilise la méthode intégrée de js pour résoudre un problème qui doit généralement être résolu en utilisant un algorithme de tri. Le code est court, il n'est pas nécessaire d'écrire des maux de tête pour le parcours et la comparaison, et la lisibilité est bonne ". Le drame intérieur est lourd, non ? Ahem, hé, je suis encore jeune et paresseux. La fonction de tri endogène js utilise également le tri. Pour plus de détails, voyez comment la fonction js endogène sort() est implémentée sur segmentfault.

Magie et astuces
Il existe de nombreuses "techniques et astuces" en js, et parfois j'utilise souvent délibérément ces "techniques et astuces" (attention, je ne suis pas opposé à l'utiliser, mais parfois ce n'est pas nécessaire). Par exemple, pour trouver la valeur maximale dans un tableau, Array in js n'a pas de méthode native pour trouver la valeur maximale, mais Math en a :

Math.max(22, 79, 33) // 79

Si vous souhaitez utiliser un tableau, vous pouvez utilisez-le également :

 var arr = [22, 79, 33];
 Math.max.apply(null, arr); // 79

Ou au lieu d'utiliser la méthode apply, vous pouvez convertir le tableau en chaîne et utiliser la méthode eval() pour exécuter le code js épissé dans "Math.max( num1, num2, num3)":

 var max = eval("Math.max(" + arr.join(',') + ")"); // 79

Si vous n'y avez pas pensé, vous pouvez simplement utiliser la fonction sort() que j'ai mentionnée ci-dessus :

var arr = [22, 79, 33];
 var getMax = function(arr) {
   var copyArr = JSON.parse(JSON.stringify(arr));
 var len = copyArr.length;
     copyArr.sort();
    return copyArr[len - 1];
 };
 getMax(arr); // 79

Méthode stupide
Voyez maintenant, vous devez être étonné par la puissance de js, mais parfois trop compter sur ses "merveilleuses compétences" vous mettra dans un état "d'arrogance". js ne signifie pas que votre propre niveau de codage est fort. Alors revenez à l'essentiel et utilisez des méthodes stupides pour exercer votre puissance cérébrale :

 var arr = [22, 79, 33];
  var getMax = function(arr) {
     var len = arr.length,
         max = arr[0]; 
     while (len--) {
         if (max >= arr[len]) {
            continue;
         }
       max = arr[len];
    } 
    return max;
 };
 getMax(arr); // 79

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn