Maison >interface Web >js tutoriel >Comment récupérer efficacement les valeurs uniques d'un tableau JavaScript, y compris les zéros ?

Comment récupérer efficacement les valeurs uniques d'un tableau JavaScript, y compris les zéros ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 02:54:14921parcourir

How to Efficiently Retrieve Unique Values from a JavaScript Array, Including Zeroes?

Récupérer des valeurs uniques à partir d'un tableau JavaScript

Dans cette question, nous visons à éliminer les valeurs en double d'un tableau JavaScript tout en garantissant l'intégrité de zéro élément. Examinons un extrait qui rencontre un problème lors de la gestion des zéros :

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;
};

Cet extrait exploite la coercition inhérente à JavaScript, où les valeurs sont implicitement converties en valeurs véridiques ou fausses. Zéro est une valeur fausse en JavaScript, et comme les objets en JavaScript sont véridiques par défaut, il est ajouté à l'objet lors de la boucle initiale. Par conséquent, il est ensuite poussé dans le tableau résultant lors de la boucle suivante.

Cependant, dans le JavaScript moderne (ES5 et versions ultérieures), nous avons accès à des méthodes plus efficaces et plus fiables pour obtenir l'unicité des tableaux :

Méthode de filtrage native :

La méthode de filtrage nous permet de parcourir les éléments d'un tableau et de renvoyer un nouveau tableau contenant uniquement les éléments qui réussir une fonction de test spécifiée. On peut définir une fonction qui vérifie si un élément est unique au sein du tableau en comparant son index avec la première occurrence du même élément :

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

// Example usage:
const a = ['a', 1, 'a', 2, '1'];
const unique = a.filter(onlyUnique);

console.log(unique); // Logs: ['a', 1, 2, '1']

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