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!