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

jQuery Discussion :

Optimiser un tableau javascript


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut Optimiser un tableau javascript
    Bonsoir
    Voici un bout de code que j'ai développé pour une appli web.
    J'aurais aimé avoir qu'un seul tableau pour optimiser mon code.
    Est ce que c'est possible ? Si oui, comment pourrais je faire ?
    Merci d'avance pour votre aide.

    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
    // tableau liste zone
    tabListZoneMap = new Array("zoneParis","zoneMarseille", "zoneLyon");
     
    // tableau zone id
    tabZoneMap = new Array();
    tabZoneMap["zoneParis"] = new Array("3", "/paris");
    tabZoneMap["zoneMarseille"] = new Array("0", "/marseille");
    tabZoneMap["zoneLyon"] = new Array("1", "/lyon");
     
    // boucle sur le tableau
    tabListZoneMap.forEach(function(item, index, array) {
    	var nbAnnonce= tabZoneMap[item][0];
    	var href= tabZoneMap[item][1];
    	console.log(item, index);
    	console.log(nbAnnonce);
    	console.log(href);
    });

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Comme ç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
    // tableau zone id
    let tabListZoneMap = [{
        zone: "Paris",
        href: "/paris",
        nbrAnnonce: 3
      },
      {
        zone: "Marseille",
        href: "/marseille",
        nbrAnnonce: 0
      },
      {
        zone: "Lyon",
        href: "/lyon",
        nbrAnnonce: 1
      }
    ];
     
    // boucle sur le tableau
    tabListZoneMap.forEach(function(item, index, array) {
      console.log("zone :", item.zone, ", nbrAnnonce :", item.nbrAnnonce, ", href :", item.href);
    });

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    Merci mais comment faire ensuite pour récupérer le href ou le nombre d'annonce d'une ville précise ?
    Avec mon code, je faisais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var nbAnnonceParis= tabZoneMap["zoneParis"][0];
    var hrefParis= tabZoneMap["zoneParis"][1];
    mais là avec le nouveau tableau, je ne vois pas comment faire.

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    Par défaut
    Bonjour,

    Toufik te l'a montré, non?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    il faudrait boucler sur le tableau à chaque fois comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    tabListZoneMap.forEach(function(item, index, array) {
      if(item.zone=="Paris"){
        nbAnnonceParis= item.nbrAnnonce;
        hrefParis= item.href;
      }
    });
    Il n'y aurait pas une façon plus directe ?

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    Par défaut
    Si tu veux une valeur au choix, fais comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let tabListZoneMap = {Paris:{href: "/paris",nbrAnnonce: 3},Marseille:{href: "/marseille",nbrAnnonce: 0},Lyon:{href: "/lyon",nbrAnnonce: 1}}
    console.log(tabListZoneMap.Paris);

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    Par défaut
    Je comprends mais il est gênant d'être obligé de boucler pour un événement "Hover"

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    oui c'est vrai qu'une boucle sur le hover, ce n'est pas terrible ^^
    Dans ce cas, il faut que j'utilise ma première solution avec deux tableaux.

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Vous pouvez utiliser l'événement "mouseenter" qui se déclenche 1 seule fois lorsque le dispositif de pointage est déplacé et que son curseur entre sur l'élément, puis je pense que filter() est beaucoup mieux que forEach pour ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $('#zoneCarte path').on('mouseenter',function(){
       let idZone=$(this).attr('id'),
          data=tabListZoneMap4
          .filter(element=>element.zone==idZone&&element.nbrAnnonce>0);
       if(data.length)
          $("#bulle-"+idZone).show();
    })
    Attention, vous utilisez nbAnnonce dans la boucle (sans "r") alors que le nom est différent dans les éléments du tableau nbrAnnonce

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    merci pour votre aide, ça va me permettre d'optimiser mon code.

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    pourquoi ne pas passer par un objet dont les clés sont les ID des éléments, le code s'en retrouve allégé.
    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
    const data = {
      "Paris": {
        "href": "/paris",
        "nbrAnnonce": 3
      },
      "Marseille": {
        "href": "/marseille",
        "nbrAnnonce": 0
      },
      "Lyon": {
        "href": "/lyon",
        "nbrAnnonce": 1
      }
    }
     
    // hover sur la carte
    //---------------------------
    $("#zoneCarte path").hover(function() {
      const idZone = $(this).attr('id');
      const item = data[idZone];
      if (item) {
        // afficher l'info bulle
        if (item.nbrAnnonce > 0) {
          $("#bulle-" + idZone).show();
        }
      }
      return false;
    });

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Par défaut
    merci, je vais regarder ça

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

Discussions similaires

  1. tableau javascript
    Par allstar dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/01/2006, 05h39
  2. tableau javascripte
    Par ridondo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/10/2005, 13h54
  3. Passage d'un tableau javascript en paramètres d'une URL
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 02/09/2005, 10h46
  4. [PHP-JS] Remplir un tableau javascript selon un tableau php
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2005, 14h02
  5. tableau javascript ecrit par une fonction asp
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 03/11/2003, 08h38

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