Partage
  • Partager sur Facebook
  • Partager sur Twitter

récupérer la valeur maximale d'un tableau ?

le max d'une colonne dans un tableau multi-dimension

    26 mars 2017 à 10:31:32

    Bonjour,

    J'ai un tableau de cette façon: (une virgule comme séparateur par SPLIT)

    {code, nom, production, superficie,   code, nom, production, superficie,   code, nom, production, superficie,.......}

    mon objectif: avoir la valeur maximale de la colonne de production

    Comment peut on faire ça?

    merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2017 à 11:13:02

      Salut,

      Tu devrais essayer de faire une double itération sur ton tableau dans laquelle tu compares les valeurs de toutes tes productions.

      Un petit exemple rudimentaire en JS pour l'algorithme :

      //notre tableau de départ
              var mytab = [
                  ['schtroumpf', 'toto', 122],
                  ['schtroumpf', 'toto', 12],
                  ['schtroumpf', 'toto', 10]
              ];
      
              //la variable qui va nous servir à ressortir la valeure maximale
              var mymax = 0;
      
              //première itération sur le tableau principal
              mytab.forEach(function(element) {
                
                //deuxième itération sur les tableaux dans le tableau principal
                  element.forEach(function(element2) {
                    
                    //on fait juste une comparaison arbitraire
                      if (element2 > mymax) {
                          mymax = element2;
                      }
                  });
              });
      
              console.log(mymax);

      Ici tu retrouvera la valeur maximale du double tableau mytab afficher dans la console.

      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2017 à 13:20:24

        Ou sinon, plus simple :

        mytab.reduce(function (acc, val) { return val[2] > acc ? val[2] : acc; }, 0);



        • Partager sur Facebook
        • Partager sur Twitter
        Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
          26 mars 2017 à 15:25:45

          Salut Vilar,

          merci pour votre réponse

          j'ai essayé  avec ton code, mais une erreur est affichée :" dataArray.forEach is not a function"

          voici mon code qui génère le tableau des données:

          dataArray = data.split(", null");
              console.log(dataArray)
          		  
          		  
          	dataArray.pop();    // supprimer le dernier element vide
          	dataArray.forEach(function(d){
          		d = d.split(", "); 
          			var feature = {
          				"type": "Feature",
          				"properties": {"gid": d[0]+"", "production":d[2]+""}, //properties object container
          				"geometry": JSON.parse(d[10])			//parse geometry
          			};
          		
          		geojson.features.push(feature);
          		//console.log(geojson)
          		
          	}	
          	)

          Est ce que vous avez une idée, comment je peux exploiter ton code?

          • Partager sur Facebook
          • Partager sur Twitter
            26 mars 2017 à 15:29:11

            As-tu essayé avec le code que je t'ai fourni ? D'ailleurs, que te donnes la ligne 2 ? Essaie de faire un console.log(Array.isArray(dataArray));, pour voir ce que ça donne.
            • Partager sur Facebook
            • Partager sur Twitter
            Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
              26 mars 2017 à 15:49:56

              j'étais avec ton code, ça me donne un résultat mais je n'arrive pas à savoir d'où vient?

              il m'a donné : la valeur max est  3 or que la vraie valeur est 3550 ????

              voilà ce que j'ai mis: (je n'ai pas compris le code)

              const maxi = dataArray.reduce(function (acc, val) { return val[2] > acc ? val[2] : acc; }, 0);
              console.log(maxi)



              -
              Edité par NoraMokh 26 mars 2017 à 15:50:29

              • Partager sur Facebook
              • Partager sur Twitter
                26 mars 2017 à 15:57:14

                Fais attention à bien remplacer le 2 dans le val[2] par l'index auquel se trouve la valeur dont tu veux la valeur maximale.
                • Partager sur Facebook
                • Partager sur Twitter
                Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
                  26 mars 2017 à 16:06:40

                  l'index de la colonne de production est 2 dans le tableau.

                  je n'est pas encore compris d'où vient la valeur 3 qu'il m'a donnée !!!!!

                  console.log(Array.isArray(dataArray)); >>>>> m'affiche : true

                  voilà le tableau,pour vous pouvez voir et m'aider: ["code_commune1,nom_commune1,production,...., code_commune2,nom_commune2,production

                  tableau

                  -
                  Edité par NoraMokh 26 mars 2017 à 16:19:40

                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 mars 2017 à 17:21:56

                    Oula, attends, ton tableau est une chaine de caractères là. Il semble qu'il faut que tu utilises JSON.parse pour pouvoir en tirer quelque chose.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
                      27 mars 2017 à 9:24:25

                      Bonjour,

                      Est ce que c'est possible d'utiliser JSON.parse pour tirer la valeur maximale d'un champ??

                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 mars 2017 à 11:27:53

                        Je dis juste qu'il faut utiliser JSON.parse pour que ton retour s'affiche correctement. D'après ta capture d'écran, ton Array ne contient qu'une entrée, c'est une chaîne de caractères qui ressemble à un objet JSON.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.

                        récupérer la valeur maximale d'un tableau ?

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown