Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

Resumen

La sentencia for...in itera sobre todos los elementos de un objeto, en un orden arbitrario. Para cada uno de los elementos, se ejecuta la sentencia especificada.

Sintaxis

for (variable in objeto) { ... }
variable
Variable que itera sobre cada elemento, el nombre de un elemento diferente del objeto iterado es asignado a esta variable en cada iteración. Opcionalmente se declara con la palabra clave var. Esta variable es local a la función, no al bucle. (En otras palabras, cuando el bucle termina, la variable tiene el valor de la última propiedad visitada).
objeto
Objeto cuyas propiedades se iteran.
sentencia
Una sentencia a ejecutar por cada propiedad. Para ejecutar múltiples sentencias dentro de un bucle, utilice una sentencia block ({ ... }) para agrupar dichas sentencias.

Descripción

Un bucle for...in no itera sobre las propiedades integradas. Esto incluye todos los metodos de objetos como el indexOf() de String o el metodo Object de Object. Sin embargo, el bucle iterará sobre todas las propiedades definidas por el usuario (incluidas aquellas que sobreescriban las propiedades integradas).

Un bucle for...in recorre las propiedades de un objeto con orden arbitrario. Si una propiedad se modifica en una iteración y luego se vuelve a visitar, el valor final de la propiedad será el de la última visita. Una propiedad que se borre antes de ser visitada no será visitada más tarde. Las propiedades que se añadan al objeto en la iteración que está teniendo lugar, pueden ser tanto visitadas como omitidas en la iteración. En general, lo mejor es no añadir, modificar o borrar propiedades del objeto mientras dure la iteración sobre él, salvo sean propiedades del objeto que actualmente se está visitando en la iteración; no existen garantías sobre que una propiedad añadida vaya a ser visitada, ni de si una propiedad modificada va a ser visitada antes de que sea modificada o después, ni siquiera de que si una propiedad es borrada vaya a ser visitada antes de borrarse o después.

Aunque pueda ser tentador utilizar esto como opción para iterar sobre un Array, es una mala idea. El for...in itera sobre propiedades definidas por el usuario además de sobre los elementos del array, por lo que si modifica propiedades no positivas o no enteras (por ejemplo, añadiéndole una propiedad "foo"  o incluso añadiendo un metodo o propiedad a Array.prototype), el for...in devolverá el nombre de dicha propiedad definida por el usuario ademas de los índices numéricos. Además, dado que el orden de iteración es arbitrario, la iteración sobre un array no accederá a los elementos en orden numérico. Para ésto, es mejor utilizar el for tradicional con un índice numérico cuando se itere sobre arrays.

Ejemplos

Ejemplo: Usando for...in

La siguiente función toma como argumento un objeto. Entonces itera sobre todas las propiedades del objeto y devuelve una cadena que lista los nombres de las propiedades y sus valores. Para facilitar la impresión de las propiedades en la cadena de texto del console.log se utilizan Plantillas de cadena de texto.

var obj = {a: 1, b: 2, c: 3};

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}

// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

 

 

Vea También

Etiquetas y colaboradores del documento

Etiquetas: 
Última actualización por: tenthlive,