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

244
Vistas
Cómo hacer una matriz de objetos a partir de una matriz de elementos

Esto me está volviendo loca.

Tengo una matriz como esta:

 myArray = ['A', 'B', 'C', 'D', 'E', 'F', ];

y mi código está creando un NUEVO objeto que se verá así:

 myNewObj = [ { name: "A", displayName: "A" }, { name: "B", displayName: "B" }, { name: "C", displayName: "C" }, { name: "C", displayName: "C" }, { name: "D", displayName: "D" }, { name: "E", displayName: "E" }, { name: "F", displayName: "F" } ]

Mi código obtiene valores en myArray y quiero crear myNewObj

Así es como lo estoy haciendo hasta ahora

creo el nuevo objeto

 let newObj = [{ "name": "", "displayName": "" }];

Luego utilizo un ciclo FOR NEXT simple y funciona hasta un punto y dice newObj[i].name IS UNDEFINED... ¿cómo es eso posible cuando lo estoy definiendo y lo veo en la consola de desarrollo de Google?

 for (let i = 0; i < myArray.length; i++) { newObj[i].name = myArray[i]; newObj[i].displayName = myArray[i]; myNewObj.push(newObj); }

Sin embargo, constantemente recibo este error:

newObj[i].name NO ESTÁ DEFINIDO y muere.

ACTUALIZACIÓN: todo funciona y aquí están los datos reales REALES

Pero como puede ver, el prototipo está ahí y cuando lo guardo en sessionStorage, obtengo [Object,Object], x 12....

ingrese la descripción de la imagen aquí

¿Debo eliminar name: y displayName: y colocarlos en otro objeto más?

ingrese la descripción de la imagen aquí

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

0

Usando Array#map :

 const myArray = ['A', 'B', 'C', 'D', 'E', 'F']; const myNewArray = myArray.map(e => ({ name: e, displayName: e })); console.log(myNewArray);

Su solución (necesita inicializar la matriz como [] y crear un nuevo objeto en cada iteración para impulsarla):

 const myArray = ['A', 'B', 'C', 'D', 'E', 'F']; const myNewArray = []; for (let i = 0; i < myArray.length; i++) { const obj = {}; obj.name = myArray[i]; obj.displayName = myArray[i]; myNewArray.push(obj); } console.log(myNewArray);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Problema con el código

Estás haciendo el Array.Push incorrectamente. Su let newObj debe ser un objeto, no una matriz. Debe inicializarse dentro del bucle. para que cada ejecución tome una ubicación de memoria diferente. Debe definir myNewObj como una matriz vacía y debe insertar su newObj en la matriz myNewObj dentro del bucle.

violín de trabajo

 const myArray = ['A', 'B', 'C', 'D', 'E', 'F']; const myNewObj = []; for (let i = 0; i < myArray.length; i++) { let newObj = { "name": "", "displayName": "" }; newObj.name = myArray[i]; newObj.displayName = myArray[i]; myNewObj.push(newObj); }; console.log(myNewObj);

Mejor enfoque

Un mejor enfoque para este problema es usar Array.map . Array.map devuelve una nueva matriz de una matriz existente. Puede ejecutar Array.map en myArray y construir la matriz myNewObj como se muestra a continuación.

violín de trabajo

 const myArray = ['A', 'B', 'C', 'D', 'E', 'F']; const myNewObj = myArray.map((item) => ({ name: item, dispayName: item})); console.log(myNewObj)

about 4 years ago · Juan Pablo Isaza Denunciar

0

 var myArray = ['A', 'B', 'C', 'D', 'E', 'F', ]; var myNewObj = []; for (let i = 0; i < myArray.length; i++) { var newObj = { name:'', displayName:'' }; newObj['name'] = myArray[i]; newObj['displayName'] = myArray[i]; myNewObj.push(newObj); } console.log(myNewObj);

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