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 :

Renvoyer la plus grande valeur d'un tableau en javascript


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Renvoyer la plus grande valeur d'un tableau en javascript
    Bonjour à tous, j'ai besoin de votre aide...
    J'ai un tableau tel que celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var unTableauEtudiant = [
            new eleve('a', 'aa', 18, 12, 13, 10, 15),
            new eleve('b', 'bb', 19, 14, 12, 14, 12),
            new eleve('c', 'cc', 17, 13, 19, 10, 8),
            new eleve('d', 'dd', 20, 15, 10, 15, 9),
            new eleve('e', 'ee', 21, 16, 13, 18, 10),
     
        ];
    la première colonne correspond à son nom, la deuxième son prénom, la troisième son âge.
    Les quatres dernières colonnes correspondent à différentes notes.

    L'objectif étant d'afficher la plus grande note de ce tableau, et aussi, la note la plus faible (donc 19 et 8).

    J'ai essayé pas mal de choses, en utilisant 2 for par exemple, mais je n'y arrive pas...
    Cependant, j'y arrives lorsque le tableau contient qu'une seule ligne (tab = [1,2,3,4,9,7] par exemple), mais pas ici...

    Merci pour votre aide..

  2. #2
    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 739
    Points
    4 739
    Par défaut
    faudrait d'abord définir à quoi correspond
    new eleve( xxx ),
    c'est visiblement un objet, mais dans ce cas de quelles méthodes on dispose?

    Je suis parti sur cette hypothèse:
    Code Javascript : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    class eleve {
      constructor(nom, prénom, age, note1, note2, note3, note4) {
        this.nom    = nom;
        this.prenon = prénom;
        this.age    = age;
        this.notes  = [ note1, note2, note3, note4 ]
        }
      get noteMax() { 
        return Math.max(...this.notes )
        }
      get noteMin() {
        return Math.min(...this.notes )
        }
      get whoIs() {
        return `${this.nom} - ${this.prenon} - ${this.age}ans `
        }
      }
     
     
    const unTableauEtudiant
          = [ new eleve('a', 'aa', 18, 12, 13, 10, 15)
            , new eleve('b', 'bb', 19, 14, 12, 14, 12)
            , new eleve('c', 'cc', 17, 13, 19, 10, 8)
            , new eleve('d', 'dd', 20, 15, 10, 15, 9)
            , new eleve('e', 'ee', 21, 16, 13, 18, 10)
            ];
    const notesMaxMin = unTableauEtudiant.reduce((r,e)=>
      {
      if ( r.max < e.noteMax) { r.max = e.noteMax; r.elevMax = e.whoIs }
      if ( r.min > e.noteMin) { r.min = e.noteMin; r.elevMin = e.whoIs }
      return r;
      }, {max:0, elevMax:'', min:Number.POSITIVE_INFINITY, elevMin:''} )
     
    console.log( notesMaxMin )  // { max: 19, elevMax: "c - cc - 17ans ", min: 8, elevMin: "c - cc - 17ans " }
    «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

  3. #3
    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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var unTableauEtudiant = [
    new eleve('a', 'aa', 18, 12, 13, 10, 15),
    new eleve('b', 'bb', 19, 14, 12, 14, 12),
    new eleve('c', 'cc', 17, 13, 19, 10, 8),
    new eleve('d', 'dd', 20, 15, 10, 15, 9),
    new eleve('e', 'ee', 21, 16, 13, 18, 10),
    ];
    tu peux créer une fonction de tri personnalisée basée sur une propriété de ton objet ...
    prop étant la propriété de l'objet eleve sur la quelle tu souhaites effectuer le tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function sortStudent(a,b){
    return (a.prop>b.prop)?1:-1;
    }
    puis tu fais un sort sur ton array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unTableauEtudiant.sort('sortStudent')
    tu peux alors récupérer le plus grand (dernier element du 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 !

  4. #4
    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
    Salut,

    et aussi:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const s=new Set();
    unTableauEtudiant.forEach(v=>{v.notes.forEach(x=>s.add(x))});
    const mini=[...s].sort((a,b)=>a-b)[0]
    const maxi=[...s].sort((a,b)=>b-a)[0]
     
    console.log(mini+" => "+ maxi)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    faudrait d'abord définir à quoi correspond

    c'est visiblement un objet, mais dans ce cas de quelles méthodes on dispose?

    Je suis parti sur cette hypothèse:
    Code Javascript : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    class eleve {
      constructor(nom, prénom, age, note1, note2, note3, note4) {
        this.nom    = nom;
        this.prenon = prénom;
        this.age    = age;
        this.notes  = [ note1, note2, note3, note4 ]
        }
      get noteMax() { 
        return Math.max(...this.notes )
        }
      get noteMin() {
        return Math.min(...this.notes )
        }
      get whoIs() {
        return `${this.nom} - ${this.prenon} - ${this.age}ans `
        }
      }
     
     
    const unTableauEtudiant
          = [ new eleve('a', 'aa', 18, 12, 13, 10, 15)
            , new eleve('b', 'bb', 19, 14, 12, 14, 12)
            , new eleve('c', 'cc', 17, 13, 19, 10, 8)
            , new eleve('d', 'dd', 20, 15, 10, 15, 9)
            , new eleve('e', 'ee', 21, 16, 13, 18, 10)
            ];
    const notesMaxMin = unTableauEtudiant.reduce((r,e)=>
      {
      if ( r.max < e.noteMax) { r.max = e.noteMax; r.elevMax = e.whoIs }
      if ( r.min > e.noteMin) { r.min = e.noteMin; r.elevMin = e.whoIs }
      return r;
      }, {max:0, elevMax:'', min:Number.POSITIVE_INFINITY, elevMin:''} )
     
    console.log( notesMaxMin )  // { max: 19, elevMax: "c - cc - 17ans ", min: 8, elevMin: "c - cc - 17ans " }

    Salut ! merci pour ton aide,
    Alors déjà oui j'avais créer une fonction eleve comme tu l'as fait au début (j'avais oublié de le préciser), donc ton hypothèse est bonne ..
    Sinon, j'ai essayé ton code, mais malheureusement lorsque j'affiche, j'obtiens [object, Object] ... peut-être parce que j'affiche mal ?
    Pour mon affichage j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("demo3").innerHTML = "=>" + notesMaxMin

  6. #6
    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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    On sent le gaz ?
    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 !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    On sent le gaz ?
    j'essaye de comprendre le code et de le mettre dans mon programme, 2 minutes désolé j'ai un peu de mal mdr

  8. #8
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var unTableauEtudiant = [
    new eleve('a', 'aa', 18, 12, 13, 10, 15),
    new eleve('b', 'bb', 19, 14, 12, 14, 12),
    new eleve('c', 'cc', 17, 13, 19, 10, 8),
    new eleve('d', 'dd', 20, 15, 10, 15, 9),
    new eleve('e', 'ee', 21, 16, 13, 18, 10),
    ];
    tu peux créer une fonction de tri personnalisée basée sur une propriété de ton objet ...
    prop étant la propriété de l'objet eleve sur la quelle tu souhaites effectuer le tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function sortStudent(a,b){
    return (a.prop>b.prop)?1:-1;
    }
    puis tu fais un sort sur ton array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unTableauEtudiant.sort('sortStudent')
    tu peux alors récupérer le plus grand (dernier element du tableau)
    Merci pour ta réponse !
    Mais ici vraiment je comprends pas par quoi je remplace le prop,
    Tu dit c'est la propriété de l'objet eleve ?
    Mais si je veux sortir la note Maximale de tout les élèves ?

    Sinon j'ai ça :

    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
    20
    21
    22
    23
       function eleve(nom, prenom, age, note1, note2, note3, note4) {
            this.nom = nom;
            this.prenom = prenom;
            this.age = age;
            this.note1 = note1;
            this.note2 = note2;
            this.note3 = note3;
            this.note4 = note4;
        }
     
     
        var unTableauEtudiant = [
            new eleve('a', 'aa', 18, 12, 13, 10, 15),
            new eleve('b', 'bb', 19, 14, 12, 14, 12),
            new eleve('c', 'cc', 17, 13, 19, 10, 8),
            new eleve('d', 'dd', 20, 15, 10, 15, 9),
            new eleve('e', 'ee', 21, 16, 13, 18, 10),
     
        ];
     
        function sortStudent(a,b){
            return (a.prop>b.prop)?1:-1;
        }
    Merci bcp

  9. #9
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par javatwister Voir le message
    Salut,

    et aussi:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const s=new Set();
    unTableauEtudiant.forEach(v=>{v.notes.forEach(x=>s.add(x))});
    const mini=[...s].sort((a,b)=>a-b)[0]
    const maxi=[...s].sort((a,b)=>b-a)[0]
     
    console.log(mini+" => "+ maxi)

    Salut, merci pour la réponse,
    Je peut placer ce code sous mon tableau directement ? Car j'ai pas compris ton code ici..
    je maitrise pas du tout le forEach

  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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Si tu nous montre à quoi ressemble un new eleve() ...
    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
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Si tu nous montre à quoi ressemble un new eleve() ...
    Bah le new eleve() je l'utilise pour créer un sous tableau pour chaque nouvel étudiant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     var unTableauEtudiant = [
            new eleve('a', 'aa', 18, 12, 13, 10, 15),
            new eleve('b', 'bb', 19, 14, 12, 14, 12),
            new eleve('c', 'cc', 17, 13, 19, 10, 8),
            new eleve('d', 'dd', 20, 15, 10, 15, 9),
            new eleve('e', 'ee', 21, 16, 13, 18, 10),
     
        ];

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    La solution proposée par @psychadelic est bonne, c'est l'exploitation des résultats qui vous déroutent.

    Voici une variante plus simple :

    Code JavaScript : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
        class eleve {
            constructor(nom, prénom, age, note1, note2, note3, note4) {
                this.nom = nom;
                this.prenon = prénom;
                this.age = age;
                this.notes = [note1, note2, note3, note4]
            }
            get noteMax() {
                return Math.max(...this.notes)
            }
            get noteMin() {
                return Math.min(...this.notes)
            }
            get whoIs() {
                return `${this.nom} - ${this.prenon} - ${this.age} ans `
            }
        }
     
        const etudiants = [
            new eleve('a', 'aa', 18, 12, 13, 10, 15), 
            new eleve('b', 'bb', 19, 14, 12, 14, 12), 
            new eleve('c', 'cc', 17, 13, 19, 10, 8), 
            new eleve('d', 'dd', 20, 15, 10, 15, 9), 
            new eleve('e', 'ee', 21, 16, 13, 18, 10)
        ];
     
        for(const etudiant of etudiants){
            console.log(etudiant.whoIs, etudiant.noteMin, etudiant.noteMax);
        }
     
        /*
        a - aa - 18 ans  10 15
        b - bb - 19 ans  12 14
        c - cc - 17 ans  8 19
        d - dd - 20 ans  9 15
        e - ee - 21 ans  10 18
        */

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #13
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Ah ouii je vois ! Merci beaucoup

    C'est résolu ... bonne journée à vous

  14. #14
    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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    non mais tu ne nous montre pas à quoi ressemble un eleve() ... quelle est sa structure? quelles sont ses proritétés ???
    tu nous montres juste tes instanciations avec new ... ça ne nous dit pas ce qu'il y a dedans ton eleve() ...
    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 !

  15. #15
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    non mais tu ne nous montre pas à quoi ressemble un eleve() ... quelle est sa structure? quelles sont ses proritétés ???
    tu nous montres juste tes instanciations avec new ... ça ne nous dit pas ce qu'il y a dedans ton eleve() ...
    Ah bah si sur mon premier message (le sujet), j'ai dit à quoi correspondait chaque colonne : new eleve(nom, prenom, age, note 1, note2, note3, note4)

  16. #16
    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
    Citation Envoyé par md100 Voir le message
    Salut, merci pour la réponse,
    Je peut placer ce code sous mon tableau directement ? Car j'ai pas compris ton code ici..
    je maitrise pas du tout le forEach
    Ben en fait, je partais de l'hypothèse de @psychadelic, avec la propriété notes comme tableau de valeurs.
    Donc je proposais juste une alternative sans avoir à ajouter de méthodes à l'objet

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function eleve (nom, prénom, age, note1, note2, note3, note4){
        this.nom    = nom;
        this.prenon = prénom;
        this.age    = age;
        this.notes  = [note1, note2, note3, note4]
    }
     
    const s=new Set();
    unTableauEtudiant.forEach(v=>{v.notes.forEach(x=>s.add(x))});
    const mini=[...s].sort((a,b)=> a-b)[0]
    const maxi=[...s].sort((a,b)=> b-a)[0]
     
    console.log(mini+" => "+ maxi)

    Mais c'était juste pour m'amuser hein!

  17. #17
    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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    donc si tu veux trier par age prop = age,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function sortStudent(a,b){
    return (a.age>b.age)?1:-1;
    }
    si tu veux trier par nom prop = nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function sortStudent(a,b){
    return (a.nom>b.nom)?1:-1;
    }
    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 !

  18. #18
    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 739
    Points
    4 739
    Par défaut
    Citation Envoyé par md100 Voir le message
    Alors déjà oui j'avais créer une fonction la classe d'objets eleve comme tu l'as fait au début (j'avais oublié de le préciser)


    Sinon, j'ai essayé ton code, mais malheureusement lorsque j'affiche, j'obtiens [object, Object] ... peut-être parce que j'affiche mal ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("demo3").innerHTML = "=>" + notesMaxMin

    vaudrait mieux coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("demo3").textContent = `=> note max: ${notesMaxMin.max} (eleve: ${notesMaxMin.elevMax})`
                                                 + `,  note min: ${notesMaxMin.min} (eleve: ${notesMaxMin.elevMin})`;
    parce qu'effectivement notesMaxMin est un objet contentenant les réponses { max, elevMax, min, elevMin }.




    J'ai aussi amélioré le code en utilisant (Paramètres du reste https://developer.mozilla.org/fr/doc...8tres_du_reste
    ce qui permet d'avoir autant de notes que l'on veut pour les élèves...

    ce qui donne
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    class eleve {
      constructor(nom, prénom, age, ...notes) {
        this.nom    = nom;
        this.prenon = prénom;
        this.age    = age;
        this.notes  = [ ...notes ]
        }
      get noteMax() { 
        return Math.max(...this.notes )
        }
      get noteMin() {
        return Math.min(...this.notes )
        }
      get whoIs() {
        return `${this.nom} - ${this.prenon} - ${this.age}ans `
        }
      }
     
    const unTableauEtudiant
          = [ new eleve('Paul',   'McCartney', 18/*ans, notes ->*/, 12, 13, 10, 15)
            , new eleve('George', 'Harrison',  19/*ans, notes ->*/, 14, 12, 14, 12)
            , new eleve('Ringo',  'Starr',     17/*ans, notes ->*/, 13, 19, 10,  8)
            , new eleve('John',   'Lennon',    20/*ans, notes ->*/, 15, 10, 15,  9)
            , new eleve('Jimi',   'Hendrix',   27/*ans, notes ->*/, 16, 13, 18, 10, 500 )
            ];
    const notesMaxMin = unTableauEtudiant.reduce((r,e)=>
      {
      if ( r.max < e.noteMax) { r.max = e.noteMax; r.elevMax = e.whoIs }
      if ( r.min > e.noteMin) { r.min = e.noteMin; r.elevMin = e.whoIs }
      return r;
      }, {max:0, elevMax:'', min:Number.POSITIVE_INFINITY, elevMin:''} )
     
    document.getElementById("demo3").innerHTML = `=> note max: ${notesMaxMin.max}  (eleve: ${notesMaxMin.elevMax})`
                                                 + `<br>=>  note min: ${notesMaxMin.min}  (eleve: ${notesMaxMin.elevMin})`;



    et tout ça pour ne gagner aucun pouce positif
    «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

  19. #19
    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
    Citation Envoyé par psychadelic Voir le message
    vaudrait mieux coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("demo3").textContent = `=> note max : ${notesMaxMin.max} (${notesMaxMin.elevMax})`
                                                 + `,  note min : ${notesMaxMin.min} (${notesMaxMin.elevMin})`;
    parce qu'effectivement notesMaxMin est un objet contentenant les réponses { max, elevMax, min, elevMin }.


    et tout ça pour ne gagner aucun pouce positif
    N'oublions pas: tout ça c'est pour le fun

  20. #20
    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 739
    Points
    4 739
    Par défaut
    Citation Envoyé par javatwister Voir le message
    N'oublions pas: tout ça c'est pour le fun
    c'est plus fun quand on a des plus, vu que dès que l'on met un truc [même innocent] qui déplaît on se choppe tout de suite des moins
    «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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. extraire les 5 plus grandes valeurs d'un tableau
    Par Lekno dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/10/2013, 11h27
  2. [TPW] Rechercher la plus grande valeur dans un tableau récursivement
    Par abdou monta dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 10/05/2013, 15h36
  3. extraire 5 plus grande valeur d'un tableau
    Par redstoff dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2011, 11h50
  4. Réponses: 2
    Dernier message: 18/03/2009, 07h48
  5. Réponses: 11
    Dernier message: 22/03/2007, 16h45

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