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 :

Supprimer doublons d'un Array


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Supprimer doublons d'un Array
    Bonjour,

    J'ai besoin de scanner tous les événements du mois en cours d'un calendrier google, d'en récupérer toutes les descriptions dans un tableau et de supprimer tout les doublons de ce tableau.
    J'ai pour l'instant, je pense trouvé une "voie" correcte, mais mon tableau me retourne toujours les doublons.
    Voici mon code:

    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
     
      var events = cal.getEvents(firstDay, lastDay);
      var events2 = cal.getEventsForDay(lastDay);
      var allevents = events.concat(events2);
     
      var patientArray = new Array();
     
      for (var i=0;i<allevents.length;i++) {
        if (allevents[i] != undefined && allevents[i].getDescription() != "" && allevents[i].getDescription() != "*** Contact Introuvable ***") {
          for (var b=0;b<allevents.length;b++) {
              if (allevents[b] != undefined && allevents[i].getDescription().split(":",1) == allevents[b].getDescription().split(":",1) && b != i){
                allevents.splice(b,1);
              }
           }
          if (allevents[i] != undefined) {
            patientArray.push(allevents[i].getDescription().split(":",1));
          }
     
        }
      }
    Pour info:
    allevents contient toutes les informations de tous les événements du mois en cours
    patientArray doit contenir uniquement les descriptions des événements et ne contenir aucun doublon

    Quand j'imprime patientArray avec le code ci dessus, j'ai bien uniquement les descriptions splité mais encore les doublons

    Le problème doit sans doute venir de cette condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (allevents[b] != undefined && allevents[i].getDescription().split(":",1) == allevents[b].getDescription().split(":",1) && b != i){
                allevents.splice(b,1);
    }
    Mais je vois pas ce qui cloche..

    PS: Le but étant de calculer le nombre de Patient différent dans le mois
    Merci de votre éventuel aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    J'ai trouver une méthode plus simple, mais ça fonctionne toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    allPatients.sort();
      for (var i=0, l=allPatients.length; i<l; i++) {
          if (allPatients[i] != allPatients[i+1]) {
                uniquePatients.push(allPatients[i]);
          }
      }
    J'ai vérifié, mon tableau allPatients est du genre ["Monsieur Dupont", "J'y arrive pas", "J'en ai marre", "Je comprends pas", "J'y arrive pas", "J'en ai marre", "Je comprends pas"]
    donc chaine de caractères.

    Normalement, la méthode si dessus devrais enlever les doublons sauf le dernier non ? Est bien il enlève aucun doublon, l'instruction if n'est meme pas executé.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé. Le problème devait venir du type de donnée du tableau... J'ai outrepassé le type de donnée avec un join() puis un split() pour que le type soit string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    allPatients.sort();
      allPatients = allPatients.join();
      allPatients = allPatients.split(",");
     
      for (var d=0; d<allPatients.length; d++) {
          if (allPatients[d] != allPatients[d+1]) {
                uniquePatients.push(allPatients[d]);
          }
      }

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    à priori ton code devrait fonctionner et ne "pusher" que l'élément dont le suivant est différent de lui.

    Question : uniquePatients est-il déclaré comme Array avant utilisation, var uniquePatients = [].

Discussions similaires

  1. [Tableaux] Supprimé doublon dans un array
    Par arnaudperfect dans le forum Langage
    Réponses: 9
    Dernier message: 13/02/2008, 09h38
  2. [ListBox] Supprimer doublons
    Par mohamed dans le forum Delphi
    Réponses: 6
    Dernier message: 14/11/2006, 17h00
  3. Supprimer doublons sur 3 colonnes?
    Par pegase33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/09/2006, 12h55
  4. une fonction pour enlever les doublons d'un array
    Par secteur_52 dans le forum Delphi
    Réponses: 1
    Dernier message: 27/06/2006, 13h45
  5. [SQL Serveur 2K] Procédure pour Supprimer doublons
    Par Vesta dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 29/05/2006, 11h32

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