Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

126
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda