En supposant que nous avons: 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']
3 Réponses :
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; });
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.
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). p>
J'ai accepté la solution Matthews, mais ne voulez pas ignorer une solution plus rapide différente que je viens de trouver. Source: optimiser les boucles pour comparer deux tableaux p> p>
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
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.