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

190
Vistas
La iteración de Javascript / Typescript sobre matriz nula no funciona con for of y forEach

Si tengo una matriz nula y quiero hacer un bucle de un objeto sobre cada entrada, pero no funciona en los bucles de funciones. Ejemplo:

 const myArray = [null, null, null] myArray.forEach(e => e = {}); // a console.log reveals that the loop is running 3 times console.log(myArray); // expected: [{}, {}, {}] reality: [null, null, null] for(let e of myArray) { e = {}; // a console.log reveals that the loop is running 3 times } console.log(myArray); // expected: [{}, {}, {}] reality: [null, null, null]

clásico para obras:

 for(let i = 0; i < myArray.length; i++) { myArray[i] = {}; } console.log(myArray); // expected: [{}, {}, {}] reality: [{}, {}, {}]

¿Paso por alto algo obvio?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Fundamentalmente, cuando haces:

 let e = myArray[someIndex];

... está copiando el valor de myArray[someIndex] a e . No hay un vínculo continuo en ese punto entre e y el elemento de la matriz, es solo que tienen el mismo valor. Tanto forEach como for-of , de diferentes maneras, están haciendo fundamentalmente lo anterior. Asignar a e , en cualquier caso, no tendrá ningún efecto en el elemento de la matriz de donde proviene el valor de e . Es exactamente como:

 let a = 1; let b = a; // This does not create any kind of link back to `a`... let b = 42; // So this doesn't change `a`.

Si desea reemplazar todos los elementos de una matriz:

  • Si desea actualizar la matriz en su lugar, use un bucle for clásico como el que tiene en su pregunta, o algo similar que le proporcione un índice, y use ese índice para escribir en myArray[index] .

    o

  • Para crear una nueva matriz de los valores actualizados, use map :

     const newArray = myArray.map((e) => /*....*/);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Cuando recorre la matriz, está pasando el valor a la devolución de llamada. Los valores primitivos se transfieren por valor y no por referencia, por lo que debe acceder al valor mediante un índice o simplemente puede asignar la matriz a una nueva

 let myArray = [null, null, null] myArray = myArray.map(e => e = {}); console.log(myArray); const myArray2 = [null, null, null] myArray2.forEach((e, i) => myArray2[i] = {}); console.log(myArray2);

ejemplo de trabajo: https://jsfiddle.net/5vpxeozs/

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