Array.length es más de lo que piensas

Conoce los súper poderes del Array.length 💪

19.03.2022 a las 14:00

Array.length es más de lo que piensas

Conoce los súper poderes del Array.length 💪


Pensaba que el método length de Array era simplemente un getter de la longitud de un array, pero te enseñaré que puedes hacer mucho más con él 🤯


Hasta ahora, cuando quería obtener un trozo de un array existente usaba el método slice.


Por ponerte un ejemplo real, cuando estoy almacenando los tokens del cliente web para poder enviarle notificaciones push, lo almaceno en la base de datos como un campo del usuario de tipo array de string, pues para que ese array no tienda a infinito, siempre que incluía un token nuevo con el método unshift (para poner el token nuevo en la primera posición), cortaba el array a un número máximo de tokens que quería ir almacenando en la base de datos.


  const maximoNumeroTokens:number=5;
  const nuevoToken:string='nuevo_token';
  usuario.tokens.unshift(nuevo_token);
  usuario.tokens=usuario.tokens.slice(0,maximoNumeroTokens);
  

El método slice, te genera un nuevo array, pero si te da igual el array antiguo (como es mi caso para el ejemplo anterior) puedes usar el console.log como un setter 😵, te explico.


El ejemplo anterior se podría cambiar por:


  const maximoNumeroTokens:number=5;
  const nuevoToken:string='nuevo_token';
  usuario.tokens.unshift(nuevo_token);
  usuario.tokens.length=maximoNumeroTokens;
  

Con esto conseguiríamos el mismo resultado.


Probablemente te estarás preguntando, ¿qué pasa con los elementos del array que ya no forman parte del mismo?

Pues que son recogidos por el garbage collector evitando así fugas de memoria.


Personalmente me voló la cabeza cuando lo descubrí, así que por eso este artículo.


Hasta luego 👋

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.1.2