0

¿Cuáles serían los parámetros para optar por un bucle for in en vez de un for of, o viceversa? O bien, ¿cuál sería la diferencia entre ambos?

2
  • Esta es la biblia de JavaScript: developer.mozilla.org . Aqui tienes todo lo que necesitas saber sobre el lenguaje, incluidos los bucles for-in/of Commented el 29 jun. a las 0:51
  • 3
    Ya te han recomendado varias veces leer la documentación en los comentarios. Pero voy a insistir en lo mismo. Puede que pienses que saber programar significa saber hacer las cosas sin más... pero en realidad la habilidad más importante de un programador es saber buscar en la documentación y saber entenderla. En serio, de poco sirve que sepas hacer X cosas de memoria si no sabes leer la documentación y toda tu vida vas a depender de alguien que te enseñe a hacer cualquier cosa diferente a lo que ya sabes hacer. Antes de preguntar esfuérzate por buscar en la documentación, para eso la hacen.
    – Benito-B
    Commented el 29 jun. a las 16:46

1 respuesta 1

3

Antes de responder la pregunta que realizas, tenemos que definir que es un "for in" y "for of".

for...in

El bucle for...in se usa para iterar sobre las propiedades enumerables de un objeto (incluidas las propiedades heredadas).

Como podemos usarla (usarla cuando, resp. pregunta 1):

  • Objetos: for...in es ideal para iterar sobre las propiedades de un objeto.
  • Propiedades enumerables: Incluye propiedades heredadas.
  • Orden de iteración: No garantiza el orden de las propiedades (especialmente en objetos no iterables).

Ejemplo:

const person = {
    name: 'John',
    age: 30,
    city: 'New York'
};

for (const key in person) {
    console.log(`${key}: ${person[key]}`);
}

for...of

El bucle for...of se usa para iterar sobre valores de objetos iterables, como arrays, strings, Map, Set, etc.

Como podemos usarla (usarla cuando, resp. pregunta 1):

  • Estructuras de datos iterables: for...of es ideal para iterar sobre arrays, strings, Map, Set, y otros iterables.
  • Valores: Itera sobre los valores directamente.
  • Propiedades no enumerables: No itera sobre las propiedades heredadas.

Ejemplo:

const array = ['a', 'b', 'c'];

for (const value of array) {
    console.log(value);
}

Para responder la pregunta #2, lo haremos implementando cada bucle:

for...in con un Array (no recomendado):

Nota: for...in en arrays no es recomendado porque puede incluir propiedades no numéricas agregadas al array.

let array = ['a', 'b', 'c'];
 
array['ABC'] = 1; //corrupción de tipo de array a mixto ... ya no es un array de cadenas ...

for (const index in array) {
    console.log(index +'=>'+ array[index]);
}

for...of con un Objeto (no permitido):

Nota: Los objetos no son iterables por defecto, por lo que for...of no funcionará aquí.

const person = {
    name: 'John',
    age: 30,
    city: 'New York'
};

for (const value of person) { // Ourtput Error: person is not iterable
    console.log(value);
}

Entonces:

Con los ejemplos anteriores podrás evaluar cuando debes implementar cada bucle... la pregunta puede ser respondida canónicamente, ya que la documentación especifica cuando usar cada bucle:

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

en el sitio en inglés fue aceptada la pregunta y debidamente respondida tambien.

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.