DEV Community

Cover image for Creando un ID random en JAVASCRIPT
Maria Antonella 🦋
Maria Antonella 🦋

Posted on

Creando un ID random en JAVASCRIPT

La semana pasada, necesitaba encontrar una manera de generar un id único para crear nombres para los archivos del teléfono en sistemas IOS (no estoy segura porque me venian en undefined).
De todos modos, buscando en Google, en San Google y San StackOverflow, encontré esta pequeña y hermosa funcion. Super sencilla.

Todo lo que tenes que hacer es invocarla, donde tenes que generar el id, y pasar la longitud deseada del id.
Y ¡magia! Devuelve un id/nombre/dato hecho con letras y números (en este ejemplo es asi!)

const makeRandomId= (length) => {
      let result = ''
      const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
      for (let i = 0; i < length; i++ ) {
        result += characters.charAt(Math.floor(Math.random() * characters.length));
     }
     return result;
  }

Enter fullscreen mode Exit fullscreen mode

👉 charAt: El método charAt() devuelve el carácter en un índice especificado en una cadena.
👉 floor(): El método floor() redondea un número hacia abajo al entero más cercano, y devuelve el resultado.
👉 random(): Math.random() devuelve un número aleatorio entre 0 (inclusive), y characters.length (excluyente):

Math.random() usado con Math.floor() puede ser usado para devolver enteros aleatorios (como esta en el ejemplo!)

Eso es todo por ahora :)

Discussion (2)

Collapse
lukeshiru profile image
LUKESHIRU

Tomá en cuenta que al estar basado en Math.random() se te puede dar el caso en el que dos IDs salgan iguales.

Idealmente si precisás ids únicos podés usar librerías como nanoid, o podes tambien usar alguna basada en "seed" (le das una base y genera ids que nunca se van a repetir tomando esa base, que tiene que ser unica y secreta). Uno de los tips más comunes en programación es "don't roll your own cryptographic", básicamente porque a menos que te dediques específicamente a la rama de criptografía, lo más probable es que cometas errores de seguridad severos, y mal que bien los IDs únicos tienen bases en criptografía.

Saludos!

Collapse
jonrandy profile image
Jon Randy • Edited on
const makeRandomID = (length, dict='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') =>
   Array.from({length}, _=>dict[~~(Math.random()*dict.length)]).join('')
Enter fullscreen mode Exit fullscreen mode

😛