JS: Objetos
Teoría: Tablas hash
Cuando trabajamos con datos en programación, a menudo necesitamos estructuras que nos ayuden a organizarlos de manera eficiente.
En esta lección, hablaremos sobre los arrays asociativos, un tipo de estructura que nos permite almacenar pares clave-valor, y veremos cómo funcionan internamente en JavaScript mediante el uso de tablas hash.
¿Qué es un array asociativo?
Dependiendo del lenguaje de programación, los arrays asociativos reciben distintos nombres:
En JavaScript, los arrays asociativos se representan mediante objetos (Object).
Uso de los arrays asociativos
Los arrays asociativos son muy utilizados en programación para almacenar datos estructurados. Son esenciales cuando trabajamos con información que incluye múltiples parámetros diferentes, como:
-
Representación de un usuario en una aplicación:
-
Configuración de una aplicación:
A diferencia de los arrays indexados:
En un array asociativo usamos claves descriptivas:
¿Cómo funcionan los arrays asociativos internamente?
Internamente, los arrays asociativos en JavaScript no se almacenan simplemente como listas de pares clave-valor. En su lugar, se utiliza una estructura llamada tabla hash.
¿Cómo se almacena un valor en un array asociativo?
Cuando escribimos:
El motor de JavaScript sigue estos pasos internamente:
-
Se inicializa un array indexado interno para almacenar los datos.
-
Se genera un hash a partir de la clave
'key'. -
El hash se convierte en un índice del array.
-
Se almacena el valor en ese índice:
De esta manera, cuando posteriormente hacemos:
El motor de JavaScript encuentra el valor correspondiente a 'key' rápidamente utilizando su hash.
¿Qué es el hashing?
Un hash es el resultado de aplicar una función de hashing a una clave. Algunos algoritmos de hashing conocidos son CRC32, MD5 y SHA.
JavaScript no cuenta con un algoritmo de hashing incorporado, así que usamos una biblioteca de terceros:
Este hash luego se convierte en un índice dentro de la tabla, por ejemplo:
De esta manera, las claves no ocupan espacios innecesarios en memoria y se pueden localizar eficientemente.
¿Qué es una colisión?
Las colisiones pueden ser un problema porque dos valores diferentes terminan "chocando" en el mismo lugar dentro de la tabla.
Métodos para resolver colisiones
Existen diferentes estrategias para manejar estas colisiones. Un método común es el direccionamiento abierto, que busca la siguiente posición libre en la tabla hash. Otro método es el encadenamiento, donde cada índice almacena una lista de elementos que comparten el mismo hash.
Resumen
- Un array asociativo almacena datos en pares clave-valor y en JavaScript se implementa con objetos.
- Los arrays asociados se implementan internamente con una tabla hash.
- El hashing convierte claves en índices numéricos para una búsqueda rápida.
- Las colisiones ocurren cuando dos claves generan el mismo índice, y existen estrategias como direccionamiento abierto y encadenamiento para resolverlas.
Completado
0 / 13