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 :

Enlever des doublons dans un tableau html


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 471
    Par défaut Enlever des doublons dans un tableau html
    bonjour,

    j'ai un tableau HTML dont chaque cellule contient des listes , j'ai besoin d'enlever les doubles MAIS par ligne uniquement (et non pas les doublons dans le tableau global).

    j'ai réussi à faire la première étape qui consiste à sélectionner toutes les lignes au travers du tableau dans les TR et de trouver les doublons.
    ce que je n'arrive pas à formuler en jquery dans la partie selector, c'est le "par ligne", du coup mon script enlève les doublons qu'il faut pas !

    exemple tableau :

    1 2 2 (2 est doublon dans la ligne)
    4 5 1 (aucun doublon)
    5 5 1 (5 est doublon dans la ligne)

    je veux donc avoir:

    1 2 X
    4 5 1
    5 X 1

    mon script actuel ne gère pas le "par ligne", du coup il enlève trop de choses :
    1 2 X
    4 5 X
    X X X

    mon script :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var dejavu= {};
    $('table tr select').each(function() {
    var txt = $(this).text();
    if (dejavu[txt])
    	$(this).remove();
    else
    	dejavu[txt] = true;

    explication de mon script :
    je crée une variable ensembliste dejavu qui contiendra les éléments rencontrés
    je fais la selection jquery
    je converti chaque contenu visible en texte
    si ce contenu est déjà présent dans dejavu, alors je supprime l’élément html sinon je mets à jour mon ensemble

    Je n'ai pas trouvé la doc jquery qui me permet de formuler un each dans un each pour faire mon "pour chaque SELECT dans chaque TR", est-ce que c'est possible ?

    une autre solution me vient en tête serait de gérer le bi-dimensionnel dans mon dejavu en stockant l'indice de la ligne afin d'éviter les faux-doublons .

    qu'en pensez-vous ? je me prends la tête où il y a plus simple ?

  2. #2
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 471
    Par défaut
    re-bonjour,

    j'ai peut-être trouver plus simple :

    pour l'instant (je teste). en gros je récupère l'index du plus proche TR et je le concataine à la chaine servant de detecteur de doublon !

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var dejavu= {};
    $('table tr select').each(function() {
    var txt = $(this).text();
    var trproche = $(this).closest('tr');
    var txt2= trproche .index();		
    txt=txt+txt2;
    if (dejavu[txt])
    	$(this).remove();
    else
    	dejavu[txt] = true;

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    Je n'ai pas trouvé la doc jquery qui me permet de formuler un each dans un each pour faire mon "pour chaque SELECT dans chaque TR", est-ce que c'est possible ?
    tous les cas ne sont pas dans les documentations, après il suffit de suivre la logique, en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // récup. des lignes, TR, de la TABLE
    const $lesTRsDeLaTable = $("table tr");
     
    // on boucle sur chaque ligne
    $lesTRsDeLaTable.each(function() {
     
      // récup. des SELECT de la ligne
      const lesSelectsDeLaLigne = $(this).find("select");
     
      // on boucle sur chaque select
      lesSelectsDeLaLigne.each(function() {
        // ton code
      }
    }

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    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 520
    Par défaut
    Bonjour,

    Il faudrait mieux nous montrer une structure simple de ton tableau HTML et nous dire ce que tu cherches à remplacer exactement, car quand je vois ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $('table tr select')
    .each(function() {
       var txt = $(this).text();
       ...
    });
    Là tu parcours tout les <select> pour récupérer le texte au complet, et donc tout le texte de toutes les <option> de la liste.

    Je me demande si c'est ce que tu cherches à remplacer ... ?

  5. #5
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 471
    Par défaut
    bonjour toufik,

    Là tu parcours tout les <select> pour récupérer le texte au complet, et donc tout le texte de toutes les <option> de la liste.
    après ta réponse j'ai douté, donc j'ai ajouté un console.log (txt);

    et je pense que tu as tord car pour une liste SELECT , $(this).text(); ne renvoie que le texte visible affiché à l'écran et non pas la totalité des options des listes déroulantes.
    Dans le cas où j'aurai utilisé des listes à choix multiples, tu aurais eu entièrement raison sur le problème du .text

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    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 520
    Par défaut
    Bonjour,

    Apparemment c'est toi qui as tord, car le teste ci-dessous renvoie tout le texte des options et pas seulement celle qui est visible (sélectionnée) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select>
    	<option>option 1</option>
    	<option>option 2</option>
    	<option>option 3</option>
    </select>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $('select').each(function(){
    console.log("text :",$(this).text()); 
    /* renvoie :
     text : 
    	option 1
    	option 2
    	option 3
     
    */
    });
    Merci Einstein, celui qui n'a pas aimé ma réponse

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2007, 18h29
  2. Fixer la taille des cellules dans un tableau HTML ?
    Par bilou95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/03/2007, 16h10
  3. [Tableaux] Retirer des doublons dans un tableau
    Par Xunil dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2006, 18h04
  4. affichert des coubes dans un tableau html ?
    Par MAJIK_ENIS dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/05/2006, 15h21
  5. [HTML] afficher des courbes dans un tableau html ?
    Par MAJIK_ENIS dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/05/2006, 15h19

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