8
votes

Comparaison de deux tableaux dans JavaScript - Différences de retour

En supposant que nous avons: xxx pré>

existe une solution éprouvée et rapide pour comparer deux tableaux les uns contre les autres, renvoyer un tableau sans les valeurs apparaissant dans les deux tableaux (C et E ici). Donc: P>

array3 = ['A', 'B', 'D']


1 commentaires

Les matrices sont-elles toujours triées, comme dans votre exemple? Si tel est le cas, cela peut être fait en temps linéaire en marchant sur les tableaux.


3 Réponses :


12
votes

Ceci est une différence définie. Une implémentation simple est la suivante:

jQuery.grep(array1, function(el)
                    {
                        return jQuery.inArray(el, array2) == -1;
                    });


2 commentaires

Veuillez envisager de mettre à jour cette réponse pour utiliser array.pototype.filter au lieu de jquery.grep car il fournira une solution même si JQuery n'est pas autorisée.


Array.Prototype.Filter est en effet une alternative sans bibliothèque. Cependant, vous avez besoin Array.Prototype.indexof < / a> aussi (au lieu d'inarray). Cependant, les deux nécessitent de charger une polyfill (fournie sur les liens) dans les navigateurs plus anciens pour obtenir une compatibilité large. Étant donné que la question a permis à JQuery, je suis allé avec cela puisqu'il a sa propre polyfill.



0
votes

Une solution rapide éprouvée que je connaisse est une recherche binaire que vous pouvez utiliser après avoir trié l'un des tableaux. Donc, la solution prend du temps qui dépend de l'algorithme de tri. mais est au moins log (n).


0 commentaires

13
votes

2 commentaires

Particulièrement agréable si l'une des listes (ici la liste2) doit être comparée à de nombreux candidats (de nombreuses liste1).


Sur chrome, la référence source liée est repérée comme contenant des logiciels malveillants