Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Generación de cadenas en bucle JS: Arrays

En programación, es común tener que generar cadenas dinámicas en un bucle. Un caso muy frecuente es la construcción de listas en HTML a partir de un conjunto de elementos.

Supongamos que queremos convertir una colección de elementos en una lista HTML:

const coll = ['milk', 'butter'];

buildHTMLList(coll);
// <ul><li>milk</li><li>butter</li></ul>

Vamos a ver dos formas de hacer esto: una que funciona pero no es eficiente, y otra más optimizada utilizando arrays y el método join().


Primera solución: Usar concatenación de cadenas

Una opción sencilla para construir la lista es utilizar una variable de tipo cadena e ir agregando los elementos li dentro de un bucle.

Paso a paso:

  1. Crear una variable result y asignarle '<ul>' para comenzar la lista.
  2. Recorrer cada elemento y agregarlo dentro de un li con concatenación de cadenas.
  3. Terminar la lista agregando '</ul>' y devolver el resultado.

Aquí está nuestro código:

const buildHTMLList = (coll) => {
  let result = '<ul>';
  for (const item of coll) {
    result = `${result}<li>${item}</li>`;
    // También podríamos escribir: result += `<li>${item}</li>`;
  }
  result = `${result}</ul>`;

  return result;
}

Este código funciona, pero tiene un problema: es ineficiente.
Cada vez que concatenamos algo a result, en realidad se está creando una nueva cadena, porque en JavaScript las cadenas son inmutables (no pueden modificarse directamente). Si la lista es muy grande, estas copias pueden afectar el rendimiento.


Segunda solución: Usar un array y join()

En lugar de concatenar directamente, es mejor construir un array con los elementos y luego unirlos en una sola cadena de manera eficiente.

Paso a paso:

  1. Crear un array vacío parts.
  2. Recorrer los elementos y agregarlos como '<li>elemento</li>' dentro del array.
  3. Usar join('') para unir todos los elementos en una sola cadena sin separador.
  4. Construir la lista con el resultado final.
const buildHTMLList = (coll) => {
  const parts = [];
  for (const item of coll) {
    parts.push(`<li>${item}</li>`);
  }

  // Unimos las partes en una sola cadena
  const innerValue = parts.join('');
  const result = `<ul>${innerValue}</ul>`;
  return result;
}

Este método es mejor porque:

  • Se evitan múltiples copias innecesarias de las cadenas.
  • Es más fácil de depurar: los datos en un array son más manejables.
  • Podemos modificar el array antes de unirlo si es necesario.

Explorando join()

El método join() nos permite unir elementos de un array en una sola cadena con un separador opcional.

const parts = ['JavaScript', 'PHP', 'Python'];
const result = parts.join(', '); // Unimos con coma y espacio

console.log(result); // "JavaScript, PHP, Python"

Si queremos que cada elemento esté en una nueva línea, usamos '\n':

const parts = ['JavaScript', 'PHP', 'Python'];
const result = parts.join('\n');

console.log(result); 
// JavaScript
// PHP
// Python

El segundo caso es muy útil para formatear texto correctamente, por ejemplo, al generar listas o imprimir reportes.


Un error común con join()

A veces se comete el error de agregar saltos de línea dentro del array en lugar de hacerlo en join(). Veamos la diferencia:

// INCORRECTO: Agregar saltos de línea dentro del array
const parts = [];
for (const item of coll) {
  parts.push(`\n<li>${item}</li>`); // ❌ No recomendado
}
const innerValue = parts.join(''); // Sin separador incorrecto

// CORRECTO: Usar el separador en `join()`
const parts = [];
for (const item of coll) {
  parts.push(`<li>${item}</li>`); 
}
const innerValue = parts.join('\n'); // ✅ Separador en join()

💡 Es mejor dejar el formato final para join(), así podemos cambiarlo sin modificar todo el código.


Resumen

  • Concatenar cadenas dentro de un bucle es ineficiente, ya que cada cambio crea una nueva cadena.
  • Es mejor construir un array con los fragmentos de texto y luego unirlos con join().
  • join() permite controlar el formato fácilmente, usando diferentes separadores.
  • Agregar saltos de línea dentro del array puede causar problemas, es mejor hacerlo en join().

Este método de trabajar con cadenas es muy útil en programación, ¡así que vale la pena dominarlo desde ahora!

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY