Maison >interface Web >js tutoriel >Comment rechercher et renvoyer efficacement des valeurs uniques dans un tableau JavaScript ?

Comment rechercher et renvoyer efficacement des valeurs uniques dans un tableau JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 10:24:10963parcourir

How to Efficiently Find and Return Unique Values in a JavaScript Array?

Recherche de valeurs uniques dans des tableaux JavaScript

Lorsque vous traitez des tableaux en JavaScript, il est souvent souhaitable de supprimer les valeurs en double pour garantir l'unicité. Voici un problème courant rencontré avec les tableaux JavaScript :

var numbers = [1, 2, 3, 4, 5, 1, 2];
numbers.getUnique(); // [1, 2, 3, 4, 5] (incorrectly includes 1 and 2)

La méthode prototype fournie, Array.prototype.getUnique, tente de filtrer les doublons mais échoue lorsqu'elle rencontre une valeur nulle.

Pour comprenons le problème, inspectons le code :

Array.prototype.getUnique = function() {
  var o = {}, a = [], i, e;
  for (i = 0; e = this[i]; i++) {o[e] = 1};
  for (e in o) {a.push (e)};
  return a;
};

Le problème réside dans l'objet o utilisé pour suivre les valeurs uniques. Lorsqu'un nombre est inséré dans o, il est converti en chaîne. Cependant, pour zéro, cette conversion donne la chaîne vide ''.

Ainsi, lorsque la deuxième boucle parcourt o, elle rencontre la chaîne vide comme clé et l'ajoute au tableau a. Cela entraîne l'inclusion incorrecte de valeurs en double.

Une solution correcte pour les valeurs uniques

Pour obtenir avec précision les valeurs uniques d'un tableau, envisagez la solution ES6 suivante en utilisant le méthode de filtrage :

function onlyUnique(value, index, array) {
  return array.indexOf(value) === index;
}

// usage example:
var numbers = [1, 2, 3, 4, 5, 1, 2];
var unique = numbers.filter(onlyUnique);

console.log(unique); // [1, 2, 3, 4, 5]

Cette fonction compare l'index de chaque valeur du tableau avec l'index actuel. Si l'index correspond, cela signifie que la valeur est unique et est incluse dans le tableau filtré. Avec cette approche, toutes les valeurs en double sont effectivement supprimées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn