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 :

Suppression de doublon dans un tableau d'objet javascript


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    debutant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : debutant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Suppression de doublon dans un tableau d'objet javascript
    Bonjour chers membres du forum,

    Je viens vers vous pour solliciter votre aide. En effet j'ai un array d'objet en javascript qui se présente comme suit :

    MonTableau
    [
    {id:"1", pays:"france"},
    {id:"2", pays:"espagne"},
    {id:"1", pays:"france"},
    {id:"2", pays:"espagne"},
    {id:"3", pays:"Italie"}
    ]

    j'aimerais supprimer les doublons des objets du tableau pour ainsi avoir un résultat comme suit:
    [
    {id:"1", pays:"france"},
    {id:"2", pays:"espagne"},
    {id:"3", pays:"Italie"}
    ]

    En vous remerciant d'avance de votre aide.

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut,

    après quelques recherches, curieusement, je n'ai pas trouvé énormément de ressources pour savoir quel algorithme est le plus efficace. Une méthode simple (http://www.developpez.net/forums/d11...s-dindexation/) est de trier ton tableau avec Array.sort et de supprimer les éléments identiques qui se suivent. À toi de jouer

  3. #3
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    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
    // déclaration du tableau
    var monTableau = [
    {id:"1", pays:"france"}, 
    {id:"2", pays:"espagne"}, 
    {id:"1", pays:"france"}, 
    {id:"2", pays:"espagne"},
    {id:"2", pays:"espagne"},
    {id:"3", pays:"Italie"}
    ] ;
    // suppression des doublons
    var cache = {};
    monTableau = monTableau.filter(function(elem,index,array){
    	return cache[elem.id]?0:cache[elem.id]=1;
    });
    // affichage
    alert(JSON.stringify(monTableau));

  4. #4
    Candidat au Club
    Homme Profil pro
    debutant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : debutant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    bonjour,

    Je vous remercie de m'avoir répondu aussi rapidement.

    @Watilin, pas besoin d'écrire un algorithme

    la méthode de Willpower marche parfaitement.

    Thanks !!

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Par contre la méthode "filter" n'apparait sur internet explorer qu'à la version 9, si tu veux te soucier des "vieux ie", tu peux ajouter ceci :

    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
    if (!Array.prototype.filter)  
    {  
      Array.prototype.filter = function(fun /*, thisp */)  
      {  
        "use strict";  
     
        if (this == null)  
          throw new TypeError();  
     
        var t = Object(this);  
        var len = t.length >>> 0;  
        if (typeof fun != "function")  
          throw new TypeError();  
     
        var res = [];  
        var thisp = arguments[1];  
        for (var i = 0; i < len; i++)  
        {  
          if (i in t)  
          {  
            var val = t[i]; // in case fun mutates this  
            if (fun.call(thisp, val, i, t))  
              res.push(val);  
          }  
        }  
     
        return res;  
      };  
    }
    source : https://developer.mozilla.org/en/Jav...#Compatibility

  6. #6
    Candidat au Club
    Homme Profil pro
    debutant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : debutant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour Willpower,

    Merci pour la précision, en fait je suis entrain de travailler sur google apps avec l’éditeur de script, donc c'est pas un soucis IE.

  7. #7
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Dernière remarque tant qu'on y est, ta structure "array" est-elle utile à ton script ? Un "object" ne serait-il pas plus adapté ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Obj = {
      "1":"France",
      "2":"Italie"
    };
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Obj = {
      "1":{"id":1,"pays":"france"},
      "2":{"id":2,"pays":"Italie"}
    }

  8. #8
    Candidat au Club
    Homme Profil pro
    debutant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : debutant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    La structure Array est inévitable dans mon cas, en fait le tableau est créé dans une boucle au je fais un montab.push à chaque tour du boucle.

  9. #9
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    donc pas inévitable... on peut très bien se passer d'un push et ajouter dans l'objet ...

  10. #10
    Candidat au Club
    Homme Profil pro
    debutant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : debutant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Ok SpaceFrog c'est noté merci de ton conseil.

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

Discussions similaires

  1. Suppression des doublons dans un tableau de caractères
    Par benjamin_malaussene dans le forum Débuter
    Réponses: 20
    Dernier message: 03/11/2014, 13h12
  2. Suppression des doublons dans un tableau des chaines
    Par rimenis dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2013, 12h26
  3. [Tableaux] suppression des doublons dans un tableau
    Par hammag dans le forum Langage
    Réponses: 3
    Dernier message: 17/06/2009, 19h13
  4. Réponses: 2
    Dernier message: 16/06/2009, 10h44
  5. Suppression de doublons dans un tableau
    Par Didi34 dans le forum Langage
    Réponses: 6
    Dernier message: 03/12/2008, 10h35

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