IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Plus grand element


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 40
    Points
    40
    Par défaut Plus grand element
    Bonjour a tous, svp j'aimerai retrouver le plus grand élément d'un tableau javascript en deux ou trois lignes sans utiliser la fonction Math.max

    Voici ce que j'ai trouve, mais je voudrai réduire encore plus le nombre de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type="text/javascript">
    function plusGrand(tab){
            var Max=0;
      for (i in tab) if(tab[i]>Max) Max=tab[i];
      return Max;
    }
     
    alert(plusGrand([2,5,1,8,3,7,17]));
    </script>

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    avec un sort() et un pop()
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Meci bien, justement je viens de me retrouver avec sort()

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    pour le fun un prototype:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    arr=[2,5,3,69,58,1,10];
    Array.prototype.max= function(){
     return this.sort().reverse()[0] ;
     }
     
     alert( arr.max() );
    Attention toutefois ce code modifie l'array de base ...
    Il faudrait travailler sur un clone de l'array ..
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 742
    Points
    4 742
    Par défaut
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const arr=[2,5,3,69,58,1,10]
     
    console.log( arr.reduce((a,c)=>a<c?c:a) )  // -> 69
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Très joli!

  7. #7
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonsoir,
    Citation Envoyé par ltatiekam Voir le message
    sans utiliser la fonction Math.max
    Il n'est toutefois pas inutile de signaler ces deux possibilités avec Math.max :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var tableau=[2,5,1,8,3,7,17];
    console.log(Math.max(...tableau));
    console.log(Math.max.apply(null,tableau));
    Autant j'avais pensé à la seconde, autant la première, je viens juste de la voir dans une documentation.

    Concernant la méthode avec le tri, il ne faut pas oublier qu'on est par défaut sur une comparaison de chaînes (avec [2,10], 2 ressortirait gagnant).

    En performances, je constate des résultats très variables d'un navigateur à l'autre (Edge, Firefox et Chrome testés).
    reduce semble tout particulièrement véloce sur Chrome, mais se traîne sur Edge.

    Sur la moyenne des trois navigateurs, la traditionnelle boucle prendrait la tête (les boucles for in et for of étant à priori à éviter si on recherche la vitesse) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function maximum(tableau)
    	{
    	var i;
    	var m;
     
    	m=Number.NEGATIVE_INFINITY;
    	i=tableau.length;
    	while(--i>=0) //ou boucle for(;;) qui serait apparemment très légèrement plus rapide sur Chrome
    		{
    		if(tableau[i]>m) //on peut éventuellement affecter tableau[i] à une variable, mais on ne gagnerait peut-être rien en moyenne
    			{
    			m=tableau[i];
    			}
    		}
    	return m;
    	}
    A confirmer avec des tests plus complets.
    Le tri est probablement la moins efficace des solutions.

    15h23 : J'ajoute une variante un peu plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function maximum(tableau)
    	{
    	var i;
    	var m;
     
    	if((i=tableau.length)===0)
    		{
    		return null; //ou NaN ou undefined
    		}
    	m=tableau[0];
    	while(--i>0)
    		{
    		if(tableau[i]>m)
    			{
    			m=tableau[i];
    			}
    		}
    	return m;
    	}

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Merci les gars, merci Loralina, mais mon but est de le faire avec moins de 5 ou 4 ligne d'instructions

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Alors pour ça, Loralina a été on ne peut plus concise!

    Citation Envoyé par Loralina

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Une version qui n'altère pas l'array initial et fait le sort numérique et pas alphabétique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ]var tableau=[2,5,1,8,3,7,17,4];
    ArrMax = (arr)=> arr.slice().sort((a, b) => a-b).pop();
    console.log( ArrMax(tableau) );
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    On peut m'expliquer les trois points ?????

    Tu as un lien vers la doc Loralina ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ... il s'agit d'un opérateur de décomposition

    il permet de décomposer un array en une liste de ses éléments pour les passer par exemple à un autre array ou en paramètres séparés à une fonction.
    Très pratique je ne connaissais pas ...

    exemples simples:
    Concatenation ordonnée d'array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    arr1= [3,4,5];
    arr2= [1,2, ...arr1,6,7];
    console.log(arr2);
    passage des éléments à une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    arr= ["somme",5,12];
    function test(a,b,c){
    return a +" : "+ (b+c);}
    console.log( test(...arr) );
    Cela se complexifie avec des jsons ...
    https://developer.mozilla.org/fr/doc...%A9composition
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par javatwister Voir le message
    Alors pour ça, Loralina a été on ne peut plus concise!
    Justement j'ai précisé, je ne veux pas utiliser Math.max()

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Oui, c'est magique mais, pour l'instant, comme dit Loralina, les navigateurs ne sont pas encore "prêts" pour concilier rapidité d'exécution et instructions éclair, notamment pour traiter de gros tableaux;
    C'est valable aussi pour les méthodes de tableaux ECMA 5.1 (itérations). Ceci dit, je n'ai pas fait de tests scientifiques poussés

  15. #15
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Oups, je répondais à Spafy;
    Itatiekam, c'est ton choix mais j'ai du mal à le comprendre.

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Sans doute un exercice ...

    mais l'utilisation de "..." pour le passage d'arguments c'est magique en effet
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déterminer la Valeur la plus grande dans une table
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/08/2014, 23h35
  2. [TP] Recherche du 2e plus grand élément d'un tableau...
    Par Dunk dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 02/03/2006, 19h36
  3. [JFrame] Création d'une fenetre plus grande que l'ecran
    Par thetoctoc dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 23/09/2004, 11h05
  4. Obtenir le plus grand entier !
    Par Gogoye dans le forum C
    Réponses: 3
    Dernier message: 09/12/2003, 09h40
  5. Réponses: 3
    Dernier message: 16/12/2002, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo