Maison  >  Article  >  interface Web  >  Quelles sont les techniques efficaces et élégantes pour le calcul des différences définies en Javascript ?

Quelles sont les techniques efficaces et élégantes pour le calcul des différences définies en Javascript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-21 10:49:02967parcourir

What are the Efficient and Elegant Techniques for Set Difference Computation in Javascript?

Calcul des différences d'ensembles efficace et élégant en Javascript

Lorsque vous traitez des opérations d'ensemble en Javascript, trouver un moyen efficace et élégant de calculer l'ensemble la différence (A - B) est un défi commun. Explorons quelques méthodes.

Approche des fonctions natives

Une solution simple consiste à utiliser des fonctions Javascript natives :

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

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

console.log(diff); // [2]

Ici, la fonction de filtre parcourt le tableau A, vérifiant si chaque élément est présent dans B à l'aide de l'opération indexOf. S'il n'est pas trouvé, l'élément est ajouté au tableau de différences diff.

Concaténation et astuce de tri

Une autre approche exploite le comportement de concaténation et de tri Javascript :

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

A = A.concat(B).sort().filter((v, i, a) => a[i] !== a[i + 1]);

console.log(A); // [2, 7]</code>

En concaténant et en triant les deux tableaux, nous obtenons une liste ordonnée d'éléments uniques. Le filtrage des doublons consécutifs nous donne la différence.

Approche basée sur les objets

Exploiter un objet de type hashmap pour stocker des éléments uniques des deux tableaux offre une solution efficace :

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

var setA = {};
A.forEach(function(x) { setA[x] = true; });

var setDiff = {};
B.forEach(function(x) { setDiff[x] = true; });

Object.keys(setA).forEach(function(x) {
  if (!setDiff[x]) {
    setDiff[x] = true;
  }
});

var diff = Object.keys(setDiff);

console.log(diff); // [2, 7]</code>

Cette approche utilise des objets comme hashmaps pour suivre les éléments dans les deux tableaux et calculer efficacement la différence.

Ces méthodes proposent différents compromis en termes d'efficacité et d'élégance. Choisissez celui qui correspond le mieux à vos besoins spécifiques.

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