Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
¿Por qué for..of no ve índices de matriz no numéricos?

Digamos, tengo una matriz con índices no numéricos:

 let arr = [12] arr["fruit"] = "apple" arr["off"] = false

1. for..of no ve índices no numéricos:

 for (let item of arr) { console.log(item) }

• Producción:

 12

2. El iterador tampoco ve índices no numéricos:

 let iterator = arr[Symbol.iterator]() let { value, done } = iterator.next() while (!done) { console.log(value); ({ value, done } = iterator.next()) }

• Producción:

 12

Sin embargo :

3. Object.keys() ve índices no numéricos:

 for (let key of Object.keys(arr)) { console.log(`key: ${key}`) }

• Producción:

clave: 0
clave: fruta
tecla: apagado

4. Object.values() ve valores de todos los índices:

 for (let value of Object.values(arr)) { console.log(`value: ${value}`) }

• Producción:

valor: 12
valor: manzana
valor: falso

5. Object.entries() ve todas las entradas:

 for (let [key, value] of Object.entries(arr)) { console.log(`key = ${key}, value = ${value}`) }

• Producción:

clave = 0, valor = 12
clave = fruta, valor = manzana  
clave = desactivado, valor = falso  

6. Object.getOwnPropertyNames() también ve todos los índices no numéricos:

 for (let prop of Object.getOwnPropertyNames(arr)) { console.log(prop) }

• Producción:

0
longitud
Fruta
apagado

7. Estos índices no numéricos son enumerables:

 let descr descr = Object.getOwnPropertyDescriptor(arr, "fruit") console.log(descr) descr = Object.getOwnPropertyDescriptor(arr, "off") console.log(descr)

• Producción

{
  valor: 'manzana',   
  escribible: cierto,   
  enumerable: cierto, 
  configurable: verdadero
}

{
  valor: falso,   
  escribible: cierto,   
  enumerable: cierto, 
  configurable: verdadero
}
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cuando usa lo que está describiendo como índices "no numéricos" con una matriz, está equivocado en cuanto a lo que está haciendo.

 let arr = [12]; // Set a variable equal to an array with only the number 12 in it arr["fruit"] = "apple"; // Add a new custom property to your instance of an Array arr["off"] = false // Add a new custom property to your instance of an Array console.log(arr[0]); // 12 // Notice how the next 3 lines access properties of the Array, not indexed values? console.log(arr.fruit); // "apple" console.log(arr.off); // false console.log(arr.length) // There is only 1 array item, but 2 additional properties

Las matrices solo tienen índices numéricos, pero son objetos, por lo que también tienen propiedades. Por ejemplo, la propiedad Array.length no es algo que aparezca cuando recorres los índices.

Entonces, cuando dice: "Object.getOwnPropertyNames() también ve todos los índices no numéricos", bueno, no, no lo hace. Como indica el nombre del método, obtiene todos los nombres de propiedades que se han agregado a esa instancia única del objeto, no los índices. Index != Property .

Si desea que los nombres vayan con los valores, debe usar Object , que tiene "claves", que pueden ser cualquier valor de cadena.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda