Propiedad JavaScript Symbol.iterator

Es un objeto de Iterables que también es una especie de arrays generalizadas. Iterables que hacen que cualquier objeto sea más fácil de usar en un for…of the loop. Sabemos que las arrays son de naturaleza iterativa, pero además de eso, también hay varios objetos que se utilizan con fines iterativos. Supongamos que si cualquier objeto que no es una array pero posee un grupo de la lista, conjunto, etc., entonces se puede usar for..of para iterarlo.

Usamos for..of loop para representar un objeto de rango de cualquier intervalo. Decide el rango en el que funcionará el for… del bucle e itera el bucle.

Usaremos un método Symbol.iterator (un método incorporado en JavaScript) para iterar el objeto de rango que se menciona anteriormente. Los pasos en los que funciona este método:

  1. Una vez que se inicia el ciclo for..of, primero verifica el error, si no se encuentra, accede al método y al objeto con el método.
  2. Después de eso, el bucle for..of se ejecutará sobre el objeto.
  3. Para tomar el siguiente valor próximo, llama al método next() para ese objeto de salida.
  4. Los valores devueltos tendrán la forma {done: Boolean, value: any}. Cuando se devuelve done=true, el bucle se considerará completo.

Sintaxis:

[Symbol.iterator]

Características:

  • El rango no tendrá el método next() por sí solo.
  • Cuando llamamos al rango[Símbolo.iterador](), se forma un iterador y el método next() generará el valor para más iteraciones.

Ejemplo:

Javascript

let range = {
  from: 2,
  to: 7
};
  
range[Symbol.iterator] = function() {
  
  return {
    now: this.from,
    end: this.to,
    next() {
      if (this.now <= this.end) {
        return { done: false, value: this.now++ };
      } else {
        return { done: true };
      }
    }
  };
};
  
for (let i of range) {
  console.log(i); 
}

Producción:

2
3
4
5
6
7

Publicación traducida automáticamente

Artículo escrito por KrishnaKripa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *