Javascript grands tableaux ou objets: performances et mémoire du navigateur

Je me demande si travailler avec des tableaux (ou des objets) contenant environ 100 000 éléments (propriétés) peut provoquer des problèmes de performances ou de mémoire dans les navigateurs lorsqu'ils les accèdent souvent en utilisant indexOf, tranche, etc. Existe-t-il des recommandations pour travailler avec de grands tableaux dans des navigateurs modernes?

Mon cas particulier. J'ai la structure suivante:

Tack01: [tableau d'éléments 10 000 en moyenne] … tack0n: [tableau d'éléments 10 000 en moyenne]

Le montant moyen des pistes est de 10.

L'élément ressemble à {id: "xa432fds", certaines propriétés}

Pendant l'exécution, je dois accéder à l'un des éléments en sachant fournir son identifiant.

Si j'utilise cette structure sans transformation, je dois effectuer une recherche dans toutes les pistes et utiliser indexOf pour trouver un élément avec Id.

Donc, je désire créer un objet index ayant la structure suivante: indexObj = {id1: référence à l'élément avec id1, id2: référence à l'élément avec id2}

Pour accéder à un certain élément, je dois simplement accéder à indexObj [id], est-ce la solution idéale pour mon cas?

Tout cela devrait être effectué du côté client.

C'est une question très large.

Je dirais que la principale recommandation serait de vraiment comprendre profondément avec quoi vous travaillez. Les tableaux en JavaScript ne sont pas vraiment des tableaux , ils sont des objets avec toute la plomberie normale des objets normaux JavaScript. Les index de tableau ne sont pas des nombres, ne sont pas des décalages dans une table de mémoire *; Ce sont des clés de chaîne dans une carte de type dictionnaire. Une fois que vous embrassez le fait que les tableaux ne sont que des objets, il peut ouvrir de nouvelles façons de structurer ou d'accéder à vos données afin d'éviter des opérations coûteuses comme indexOf .

(* Sauf optimisation des moteurs JavaScript, bien sûr.)


Mise à jour : En regardant votre édition, oui, transformer les données afin que vous puissiez rechercher des pistes en utilisant leur id comme nom de propriété ( indexObj[id] ) est ce que je recommanderais. Ensuite, au lieu de la recherche linéaire coûteuse requise par indexOf , vous bénéficiez de la gestion des noms de propriétés du moteur de JavaScript, qui sera généralement une recherche beaucoup plus efficace (b arbres et / ou structures de hash, etc.).

Une fois que vous avez créé votre version indexée, si vous pouvez publier la version du tableau, la mémoire consommée par le tableau et ses noms de propriété ( "0" , "1" , etc.) peuvent être réclamés, ce qui peut être utile ( Vos pistes individuelles resteront en mémoire parce que vous les référencerez à partir de la structure indexée).