| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/for...in | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
Esta caracterstica est consolidada y funciona en muchos dispositivos y versiones de navegador. Est disponible en todos los navegadores desde julio de 2015.
La instruccin for-in itera sobre todas las propiedades enumerables de un objeto que est codificado por cadenas (ignorando los codificados por Smbolos, incluidas las propiedades enumerables heredadas.
for...in?
const object = { a: 1, b: 2, c: 3 };
for (const property in object) {
console.log(`${property}: ${object[property]}`);
}
// Expected output:
// "a: 1"
// "b: 2"
// "c: 3"
for (variable in objeto) instruccin
variableAsigna un nombre de propiedad diferente a la variable en cada iteracin.
objetoObjeto cuyas propiedades enumerables que no son smbolos se iteran.
Un bucle for...in solo itera sobre propiedades enumerables que no son smbolo. Los objetos creados a partir de constructores integrados como Array y Object han heredado propiedades no enumerables de Object.prototype y String.prototype, como el mtodo indexOf() de String o el mtodo toString() de Object. El bucle iterar sobre todas las propiedades enumerables del objeto en s y aquellas que el objeto hereda de su cadena de prototipos (las propiedades de los prototipos ms cercanos tienen prioridad sobre las de los prototipos ms alejados del objeto en su cadena de prototipos).
deleted, added o modifiedUn bucle for...in itera sobre las propiedades de un objeto en un orden arbitrario (consulta el operador delete para obtener ms informacin sobre por qu no puede depender del aparente orden de la iteracin, al menos en una configuracin entre navegadores).
Si una propiedad se modifica en una iteracin y luego se visita en un momento posterior, su valor en el bucle es su valor en ese momento posterior. Una propiedad que se elimina antes de haber sido visitada no se visitar ms tarde. Las propiedades agregadas al objeto sobre el que se est produciendo la iteracin se pueden visitar u omitir de la iteracin.
En general, es mejor no agregar, modificar o eliminar propiedades del objeto durante la iteracin, aparte de la propiedad que se est visitando actualmente. No hay garanta de si se visitar una propiedad agregada, si se visitar una propiedad modificada (distinta de la actual) antes o despus de que se modifique, o si se visitar una propiedad eliminada antes de eliminarla.
for...inNota:
for...in no se debe usar para iterar sobre un Array donde el orden del ndice es importante.
Los ndices del arreglo son solo propiedades enumerables con nombres enteros y, por lo dems, son idnticos a las propiedades generales del objeto. No hay garanta de que for...in devuelva los ndices en un orden en particular. La instruccin de bucle for...in devolver todas las propiedades enumerables, incluidas aquellas con nombres no enteros y aquellas que se heredan.
Debido a que el orden de iteracin depende de la implementacin, es posible que la iteracin sobre un arreglo no visite los elementos en un orden coherente. Por lo tanto, es mejor usar un bucle for con un ndice numrico (o Array.prototype.forEach() o el bucle for...of) cuando se itera sobre arreglos donde el orden de acceso es importante.
Si solo deseas considerar las propiedades adjuntas al objeto en s mismo, y no sus prototipos, usa getOwnPropertyNames() o realiza una hasOwnProperty() verificacin (propertyIsEnumerable() tambin se puede utilizar). Alternativamente, si sabes que no habr ninguna interferencia de cdigo externo, puedes extender los prototipos incorporados con un mtodo de verificacin.
for...in?Dado que for...in est construido para iterar propiedades de objeto, no se recomienda su uso con arreglos y opciones como Array.prototype.forEach() y existe for...of, cul podra ser el uso de for...in?
Es posible que se utilice de forma ms prctica con fines de depuracin, ya que es una forma fcil de comprobar las propiedades de un objeto (mediante la salida a la consola o de otro modo). Aunque los arreglos suelen ser ms prcticos para almacenar datos, en situaciones en las que se prefiere un par clave-valor para trabajar con datos (con propiedades que actan como la "clave"), puede haber casos en los que desees comprobar si alguna de esas claves cumple un valor particular.
for...inEl siguiente bucle for...in itera sobre todas las propiedades enumerables que no son smbolos del objeto y registra una cadena de los nombres de propiedad y sus valores.
var obj = { a: 1, b: 2, c: 3 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
// Produce:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
La siguiente funcin ilustra el uso de hasOwnProperty() las propiedades heredadas no se muestran.
var triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
this.color = "red";
}
ColoredTriangle.prototype = triangle;
var obj = new ColoredTriangle();
for (const prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
}
// Produce:
// "obj.color = red"
| Especificacin |
|---|
| ECMAScript 2027 LanguageSpecification # sec-for-in-and-for-of-statements |
for...of una declaracin similar que itera sobre la propiedad valuesfor each...in una declaracin similar pero obsoleta que itera sobre los valores de las propiedades de un objeto, en lugar de los nombres de las propiedades en sforfor...in)Object.getOwnPropertyNames()Object.prototype.hasOwnProperty()Array.prototype.forEach()Esta pgina se modific por ltima vez el 23 jul 2026 por colaboradores de MDN.
Partes de este contenido son 19982026 de colaboradores individuales de mozilla.org. Contenido disponible bajo una licencia Creative Commons.
| Web Proxy Viewer | New URL | Original Page |