Saltar al contenido

Tu propio iterable

JavaScript · Unidad 16: Iteradores y generadores

Un objeto tuyo no se puede recorrer porque le falta el método que entrega los valores. Ese método tiene un nombre fijo: [Symbol.iterator], con corchetes.

Escríbelo como generador, con el asterisco delante, y tu clase ya funciona en un for...of.

class Fila {
  constructor(gente) {
    this.gente = gente;
  }
  *[Symbol.iterator]() {
    for (const p of this.gente) {
      yield p;
    }
  }
}
const f = new Fila(["Ana", "Luis"]);
for (const p of f) {
  console.log(p);
}

Imprime

Ana
Luis

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Predice la salida

    ¿Qué imprime este código?

  2. 2. Completa el código

    Completa la clase para poder recorrerla con un for...of.

  3. 3. Encuentra el bug

    Debería imprimir los dos nombres de la fila, uno por línea. ¿Qué línea tiene el error?

  4. 4. Predice la salida

    La clase entrega solo las calificaciones aprobatorias, de 6 para arriba.

  5. 5. Opción múltiple

    Con este objeto, ¿qué pasa si escribes for (const c of caja)?

  6. 6. Predice la salida

    ¿Qué imprime este código?

  7. 7. Ordena las líneas

    Arma la clase Semana para que [...new Semana()] dé sus dos días.

  8. 8. Opción múltiple

    ¿Qué necesita un objeto tuyo para poder usarse en un for...of?

  9. 9. Completa el código

    Completa para contar cuántas letras distintas entrega el objeto.

  10. 10. Predice la salida

    ¿Qué imprime este código?

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →