Come esercizio per me stesso per praticare le mie "abilità" di JavaScript, sto provando a scrivere un filtro sul lato client. Dovrebbe essere in grado di filtrare "blocchi di contenuti" mentre l'utente digita.
Per "blocco del contenuto", intendo un elenco di DomElement che contengono almeno un nodo di testo - è possibile che contengano più e anche una quantità diversa di nodi di testo, annidati all'interno di altri nodi, ecc.
Ho pensato a 2 approcci:
-
Inizializzazione della pagina, scansione di tutti i nodi e memorizzazione di tutto il testo in una sorta di mappa o albero.
-
Semplicemente itera su ogni elemento e controlla se ha la stringa da cercare / filtrare. È possibile aggiungere prestazioni qui memorizzando nella cache, filtrando solo gli articoli rimanenti correnti se il testo è stato aggiunto, ecc.
Ovviamente, se il numero di nodi è veramente grande, l'opzione 1 impiegherà un po 'di tempo a costruire l'' indice ', ma sarà più veloce una volta costruita. L'opzione 2 tuttavia sarà disponibile direttamente sul caricamento della pagina poiché non viene eseguita alcuna inizializzazione. Ma ovviamente ci vorrà più tempo per cercare.
Quindi la mia domanda è: qual è l'approccio migliore qui? E come implementare il "caching" e / o "index"?