Maison >interface Web >js tutoriel >Comment calculer efficacement la différence entre les ensembles dans les tableaux Javascript ?

Comment calculer efficacement la différence entre les ensembles dans les tableaux Javascript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-21 11:22:29914parcourir

How to Compute Set Difference Efficiently in Javascript Arrays?

Calcul efficace de la différence d'ensemble avec des tableaux Javascript

Le calcul de la différence d'ensemble entre deux tableaux peut être une opération cruciale dans la manipulation des données et la théorie des ensembles. En Javascript, où les tableaux servent de structure de données principale, il est essentiel de trouver des moyens efficaces et élégants d'effectuer cette tâche.

Une approche simple consiste à exploiter la fonction native array.filter(), comme démontré ci-dessous :

<code class="js">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

var diff = A.filter(function(x) {
  return B.indexOf(x) < 0;
});</code>

Cette approche utilise la fonction indexOf() pour déterminer si un élément de A existe dans B. Sinon, l'élément est ajouté au tableau de comparaison résultant. Bien que simple, il présente l'inconvénient d'effectuer des recherches linéaires dans le tableau B pour chaque élément de A, ce qui peut entraîner une complexité temporelle O(n^2).

Pour les tableaux plus grands, les performances peuvent être améliorées en utilisant le algorithme suivant :

  1. Créez un ensemble S contenant tous les éléments de B.
  2. Parcourez A et ajoutez tout élément introuvable dans S au tableau de différences diff.
<code class="js">var s = new Set(B);
var diff = A.filter(function(x) {
  return !s.has(x);
});</code>

L'utilisation d'un ensemble pour S garantit que les tests d'appartenance sont effectués en temps constant, ce qui donne une complexité temporelle globale de O(n).

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