Maison >interface Web >js tutoriel >Comment puis-je trouver efficacement l'intersection, la différence et la différence symétrique de deux tableaux JavaScript ?

Comment puis-je trouver efficacement l'intersection, la différence et la différence symétrique de deux tableaux JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-29 03:39:10851parcourir

How Can I Efficiently Find the Intersection, Difference, and Symmetric Difference of Two JavaScript Arrays?

Recherche des différences de tableaux en JavaScript : intersection, différence et différence symétrique

En JavaScript, comparer des tableaux élément par élément peut être fastidieux . Pour simplifier ce processus, explorons un outil puissant : Array.prototype.includes().

Intersection

Pour obtenir les valeurs communes aux deux tableaux, nous peut utiliser filter(). Par exemple :

let intersection = arr1.filter(x => arr2.includes(x));

Cela produit l'intersection : [2, 3].

Différence

Pour identifier les valeurs présentes uniquement dans arr1, nous pouvons filtrer les éléments qui existent dans arr2.

let difference = arr1.filter(x => !arr2.includes(x));

Il en résulte la différence : [1].

Différence symétrique

Pour obtenir les éléments trouvés exclusivement dans arr1 ou arr2, nous combinons les deux différences :

let symDifference = arr1.filter(x => !arr2.includes(x))
                        .concat(arr2.filter(x => !arr1.includes(x)));

Cela produit la différence symétrique : [1].

Comme le souligne @Joshaven Potter, ces méthodes peuvent être ajoutées directement au Array.prototype pour une flexibilité améliorée :

Array.prototype.diff = function(arr2) { 
  return this.filter(x => !arr2.includes(x)); 
}

Ensuite, vous pouvez l'utiliser directement sur les tableaux :

[1, 2, 3].diff([2, 3]) // [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