Avec JavaScript 1.6 / ECMAScript 5 vous pouvez utiliser la fonction native filter
d'un tableau de la manière suivante pour obtenir un tableau avec des valeurs uniques :
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
// usage example:
var a = ['a', 1, 'a', 2, '1'];
var unique = a.filter(onlyUnique);
console.log(unique); // ['a', 1, 2, '1']
La méthode native filter
bouclera le tableau et ne laissera que les entrées qui passent la fonction de rappel donnée. onlyUnique
.
onlyUnique
vérifie si la valeur donnée est la première à apparaître. Si ce n'est pas le cas, il doit s'agir d'un doublon et ne sera pas copié.
Cette solution fonctionne sans aucune bibliothèque supplémentaire comme jQuery ou prototype.js.
Cela fonctionne également pour les tableaux avec des types de valeurs mixtes.
Pour les anciens navigateurs (<ie9), qui ne supportent pas les méthodes natives filter
y indexOf
vous pouvez trouver des solutions de contournement dans la documentation MDN de l'outil filtre y indexOf .
Si vous voulez conserver la dernière occurrence d'une valeur, il suffit de remplacer indexOf
con lastIndexOf
.
Avec ES6, cela peut être raccourci :
// usage example:
var myArray = ['a', 1, 'a', 2, '1'];
var unique = myArray.filter((v, i, a) => a.indexOf(v) === i);
console.log(unique); // unique is ['a', 1, 2, '1']
Merci à Camilo Martin pour l'indice dans le commentaire.
ES6 possède un objet natif Set
pour stocker des valeurs uniques. Pour obtenir un tableau avec des valeurs uniques, vous pouvez maintenant faire ceci :
var myArray = ['a', 1, 'a', 2, '1'];
let unique = [...new Set(myArray)];
console.log(unique); // unique is ['a', 1, 2, '1']
Le constructeur de Set
prend un objet itérable, comme un tableau, et l'opérateur d'étalement. ...
transformer l'ensemble en un Array. Grâce à Lukas Liese pour l'indice dans le commentaire.
6 votes
@hippietrail Cette ancienne question concerne la recherche et le retour des seuls doublons (j'étais aussi confus !). Ma question est plutôt de savoir pourquoi cette fonction échoue lorsqu'un tableau contient un zéro.
0 votes
Vous voudrez probablement aussi rendre le titre de votre question moins vague.
0 votes
Pour les futurs lecteurs, lorsque vous commencez à constater que vous devez modifier algorithmiquement le contenu de votre structure de données en permanence (les ordonner, supprimer les éléments répétitifs, etc.) ou rechercher des éléments à l'intérieur de celle-ci à chaque itération, il est prudent de supposer que vous utilisez la mauvaise structure de données en premier lieu et d'en utiliser une qui est plus appropriée pour la tâche à accomplir (dans ce cas, un ensemble de hachage au lieu d'un tableau).
0 votes
J'ai copié le code d'un autre endroit, il y a très longtemps... mais cela semble assez simple :
o
=object
,a
=array
,i
=index
ye
= humm, quelque chose :P0 votes
Duplicata possible de Comment obtenir des valeurs uniques dans un tableau
0 votes
Je voulais juste signaler que beaucoup de personnes ont suggéré d'utiliser JavaScript Set comme solution, mais faites attention car il n'est pas pris en charge par Internet Explorer. Si vous devez prendre en charge IE, utilisez un polyfill.
0 votes
Pour ceux qui veulent retourner un tableau d'objets avec toutes les propriétés uniques par clé : stackoverflow.com/questions/15125920/
0 votes
L'utilisation de la ramda R.uniq(list) résout ce problème. ramdajs.com/docs/#uniq
0 votes
Mon moyen préféré est
let uniqueArray = [...new Set(originalArray)];
0 votes
@LukasLiesis Je ne suis pas sûr que le "" soit approprié. javascript.plainenglish.io/ . S'il vous plaît les amis, arrêtez de confondre court et rapide.
0 votes
@user6316468 Veuillez noter la mise en évidence de la partie code. L'émoji fusée n'a rien à voir avec l'échantillon de code. Désolé pour la confusion.