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
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
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; }
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)
Jusqu'à maintenant intersect_safe a donné les meilleurs résultats. VOUS et le trait de soulignement le pire.
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.