En este curso fueron presentados varias estructuras de datos que no vienen por defecto en el lenguaje (JS). Pero hubo una en especifico que llamo mi atención, la Hash Table. Esta estructura es similar a un objeto literal en JS o lo que seria lo mismo que un archivo JSON. Pero la principal diferencia, es que tiene un hash que identifica la dirección de cada llave y valor
.
.
En JS, a diferencia de otros lenguajes de programación, no hay función built-in que nos permitan crear hashes. Pero nosotros podemos hacer esos hashes. En este tutorial voy a mostrar de una manera simple como hacer un hash alfanumérico (con numeros y letras) en JS.
.
#¿Un hash… qué?
Los hashes son cadenas de valores numéricos, alfabéticos o ambos (alfanuméricos) que son utilizados en el desarrollo de software por razones diversas. Seguro que en tu camino como dev encontraras y utilizaras muchos hashes. Su forma es mas o menos la siguiente:
.
.
#Creando un hash from scratch
.
Antes de que veas el código que se encuentra en la parte de abajo, te reto a que intentes hacer un hash por tu cuenta…
.
functionhashFunction(key) {
const splittedWord = key.toLowerCase().split("");
const codes = splittedWord.map((letter) => `${letter}${String(letter).charCodeAt(0)}`);
return codes.join("");
}
let hash1 = hashFunction("myfirsthash")
console.log(hash1) // m109y121f102i105r114s115t116h104a97s115h104
Ok, el código ya esta arriba, como te puedes dar cuenta, no es el gran código, es realmente algo sencillo. Con el código de arriba tu puedes obtener tu hash alfanumérico, pero ahora voy a desmenuzar paso por paso como funciona, para que tu lo puedas mejorar y hacer mas robusto.
.
charCodeAt
, que regresa el código del digito que se le mande como parámetro.function hashFunction("hola") {
const splittedWord = "hola".toLowerCase().split(""); // ["h", "o", "l", "a"]
const codes = splittedWord.map((letter) => `${letter}${String(letter).charCodeAt(0)}`); // ["h104", "o111", "l108", "a97"]
return codes.join(""); // h104o111l108a97
}
Aquí lo que paso es que se le esta mandando como parámetro la palabra “hola”, como podemos ver, la constante splittedWord solo rompe el string, después codes consigue ese mismo carácter que esta en splittedWord mas su código. Al final, ese array se une en una sola cadena y eso es lo que forma el hash.
.
Si ves el primer ejemplo mas a detalle, podrás darte cuenta que cuenta con un patrón, sobre todo en la posición de las letras, seguidas por tres números. Esta es solo una manera de hacer un hash, pero hay muchas mas. Te reto a que dejes tu propuesta o que hagas mas robusto el código presentado
.
// Encuentra el patrón
lethash1 = hashFunction("myfirsthash")
console.log(hash1) // m109y121f102i105r114s115t116h104a97s115h104