996 votes

Plus simple code pour intersection de tableau en javascript

Quel est le code plus simple et sans bibliothèque d’application des intersections de tableau en javascript ? J’ai envie d’écrire

et obtenez

1840voto

Anon. Points 26829

Utiliser une combinaison de et .

163voto

atk Points 5061

destructeur semble la plus simple, surtout si nous pouvons supposer que les entrées sont triées

/* destructive trouve à l'intersection de 
 * deux tableaux d'une façon simple. 
*
 * PARAMS
 * un premier tableau, doit déjà être triés
 * b - deuxième tableau, doit déjà être triés
*
 * NOTES
 * L'état de l'entrée de tableaux est pas défini lors de l'
 * la fonction retourne. Ils devraient être 
 * (pro) sous-évaluées.
*
 * Doit avoir O(n) opérations, où n est 
 * n = MIN(un.la longueur, la b.la longueur)
*/
fonction intersection_destructive(a, b)
{
 var resultat = new Array();
 while( un.longueur > 0 && b.longueur > 0 )
 { 
 si (a[0] < b[0] ){ un.maj(); }
 else if (a[0] > b[0] ){ b.maj(); }
 else /* qu'ils sont égaux */
{
résultat.push(un.maj());
b.maj();
}
}

 résultat de retour;
}

Non destructif doit être un poil plus compliqué, parce que nous avons de suivre les indices

/* trouve à l'intersection de 
 * deux tableaux d'une façon simple. 
*
 * PARAMS
 * un premier tableau, doit déjà être triés
 * b - deuxième tableau, doit déjà être triés
*
 * NOTES
*
 * Doit avoir O(n) opérations, où n est 
 * n = MIN(un.longueur(), b.longueur())
*/
fonction intersect_safe(a, b)
{
 var ia=0, bi=0;
 var resultat = new Array();

 alors que( ai < un.longueur && bi < b.la longueur )
{
 si (a[ai] < b[bi] ){ ia++; }
 else if (a[ai] > b[bi] ){ bi++; }
 else /* qu'ils sont égaux */
{
résultat.push ([ia]);
l'ia++;
bi++;
}
}

 résultat de retour;
}

62voto

neoswf Points 1865

J’ai fait une JsFiddle Page de test Banchmark pour toutes les méthodes ici, y compris la fonction d’intersection _underscore . (plus haut est préférable)

enter image description here

Jusqu'à maintenant intersect_safe a donné les meilleurs résultats. VOUS et le trait de soulignement le pire.

14voto

Steven Huwig Points 8029

Qu’en est-il juste en utilisant des tableaux associatifs ?

Edit :

9voto

Gowsikan Points 597

Je voudrais ajouter ici cette méthode aussi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X