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 tableau


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut Supprimer doublons d'un tableau
    Bonjour à vous tous,

    J'ai une fonction que j'aimerais que vous me validiez, elle supprime des doublons d'un tableau mais je voulais savoir si on pouvait pas l'améliorer voici donc le code de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function RemoveDupArray(a)
    {
    	a.sort();
    	for (var i = 1; i < a.length; i++)
    	{
    		if (a[i-1] === a[i])
    		a.splice(i, 1);
    	}
    }
    Merci d'avance de vos réponses

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Avec cet algo, tu ne pourras comparer que les deux éléments qui se suivent. Tu dois faire un autre boucle imbriqué dans le for.

    A+.

  3. #3
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    Cette seconde boucle va me servir à quoi en fait ?

  4. #4
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    non y'a un sort avant...
    faut juste penser à decrémenter le i quand il y une suppression
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    non y'a un sort avant...
    Désolé, j'ai loupé ça

  6. #6
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    Merci space frog.. =)

    Mais je le décrémente où mon i alors ?? dans la boucle ?, je fais un simple

  7. #7
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Par défaut
    Salut,

    tu dois le mettre dans le for, mais à l'intérieur du if sinon à chaque suppression tu vas sauter une valeur à tester

  8. #8
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    Ah d'accord oui effectivement tu as raison. Mais ce que je comprends pas c'est que j'ai l'impression que ma fonction marche je 'lai testé sur un tableau et ça fonctionne. Quelqu'un pourrait il vérifier si de son côté ça fonctionne

  9. #9
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Par défaut
    Ta fonction ne fonctionne pas toujours si tu ajoutes pas le i--.

    Par exemple avec ce tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Array(1,1,1,2);
    j'obtiens le tableau suivant :

    d'où l'utilité du i--

  10. #10
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    C'est vraiment bizarre moi avec mon tableau ça marche tout le temps.Bon c'est un tableau contenant des email je pense pas que ça change grand chose. Je vais tester avec le i--

  11. #11
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    Est ce que comme ça c'est bon ?

    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
    function RemoveDupArray(a)
    {
    	//	Tri les élements du tableau
    	a.sort();
    	for (var i = 1; i < a.length; i++)
    	{
    		//	Le triple = retourne vrai si a[i-1] est égal à a[i]
    		//	et qu'il sont de même type
    		if (a[i-1] === a[i])
    			//	Retourne une tranche de tableau composé des éléments 
    			//	ayant un indice supérieur ou égal à i et < 1.
    			a.splice(i, 1);
    			a[i]--;
    	}
    }

  12. #12
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Par défaut
    si dans ton tableau tu n'as que des doublons ça marchera à tous les coups... par contre si tu as des trios, là ça va poser problème comme avec mon exemple

    non ton code n'est pas bon :

    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
    function RemoveDupArray(a)
    {
    	//	Tri les élements du tableau
    	a.sort();
    	for (var i = 1; i < a.length; i++)
    	{
    		//	Le triple = retourne vrai si a[i-1] est égal à a[i]
    		//	et qu'il sont de même type
    		if (a[i-1] === a[i]){
    
    			//	Retourne une tranche de tableau composé des éléments 
    			//	ayant un indice supérieur ou égal à i et < 1.
    			a.splice(i, 1);
    			i--;
                     }
    	}
    }

  13. #13
    Membre confirmé
    Homme Profil pro
    Informatique
    Inscrit en
    Mai 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 133
    Par défaut
    j'ai essayé avec un trio et ça fonctionne je comprends pas pourquoi ^^ bon je vais tenir compte de ce que tu m'as dis et effectuer la modif merci à vous tous =)

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

Discussions similaires

  1. Supprimer doublon d'un tableau
    Par nathaliepak dans le forum Débuter
    Réponses: 11
    Dernier message: 19/02/2014, 14h02
  2. Supprimer les doublons dans un tableau à deux dimensions
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/07/2008, 09h47
  3. Supprimer les doublons dans un tableau à deux dimensions
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 30/07/2008, 09h33
  4. [langage] pb de supprimer les doublons d'un tableau
    Par peppena dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2006, 18h08
  5. Réponses: 5
    Dernier message: 23/05/2006, 14h08

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