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

253
Vistas
Crear objeto a partir de una matriz

Quiero crear un objeto de una lista dentro de una matriz. Tengo una matriz que es dinámica y se supone que debe verse así:

var dynamicArray = ["2007", "2008", "2009", "2010"];

Y quiero hacer un objeto como este con algo de JavaScript ES6:

 const obj = { 2007: { x: width / 5, y: height / 2 }, 2008: { x: (2 / 5) * width, y: height / 2 }, 2009: { x: (3 / 5) * width, y: height / 2 }, 2010: { x: (4 / 5) * width, y: height / 2 } }

No te preocupes por los objetos internos. Solo quiero crear una estructura como esta:

 obj = { 2007: ..., 2008: ..., ... }

Por favor ayuda, gracias.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Simplemente

 const obj = {}; for (const key of yourArray) { obj[key] = whatever; }

o si prefieres el estilo "funcional":

 const obj = yourArray.reduce((o, key) => Object.assign(o, {[key]: whatever}), {});

usando el operador de extensión de objeto moderno:

 const obj = yourArray.reduce((o, key) => ({ ...o, [key]: whatever}), {})

Ejemplo:

 [ { id: 10, color: "red" }, { id: 20, color: "blue" }, { id: 30, color: "green" } ].reduce((acc, cur) => ({ ...acc, [cur.color]: cur.id }), {})

Producción:

 {red: 10, blue: 20, green: 30}

Así es como funciona:

reduce se inicializa con un objeto vacío (vacío {} al final), por lo tanto, las variables de la primera iteración son acc = {} cur = { id: 10, color: "red" } . La función devuelve un objeto: esta es la razón por la cual el cuerpo de la función está entre paréntesis => ({ ... }) . El operador de propagación no hace nada en la primera iteración, por lo que red: 10 se establece como primer elemento.

En la segunda iteración, las variables son acc = { red: 10 } cur = { id: 20, color: "blue" } . Aquí el operador de propagación expande acc y la función devuelve { red: 10, blue: 20 } .

Tercera iteración acc = { red: 10, blue: 20 } cur = { id: 30, color: "green" } , por lo que cuando acc se distribuye dentro del objeto, nuestra función devuelve el valor final.

over 4 years ago · Santiago Trujillo Denunciar

0

El nuevo Object.fromEntries , de ECMAScript 2019, hace que sea aún más fácil transformar valores de una matriz en claves en un objeto como sigue

 const dynamicArray = ["2007", "2008", "2009", "2010"]; const obj = Object.fromEntries( dynamicArray.map(year => [year, { something: "based", on: year }]) ) console.log(obj)

O tal vez para resolver su propio problema original

 const width = 1920 const height = 1080 const dynamicArray = ["2007", "2008", "2009", "2010"]; const obj = Object.fromEntries( dynamicArray.map((year, i) => [year, { x: (( i + 1) / 5) * width, y: height / 2 }]) ) console.log(obj)

over 4 years ago · Santiago Trujillo Denunciar

0

en js con la función de reducción de es6 para la matriz, lo hago así

 let x = [1,2,3] let y = x.reduce((acc, elem) => { acc[elem] = elem // or what ever object you want inside return acc }, {}) console.log(y) // {1:1, 2:2, 3:3}
over 4 years ago · Santiago Trujillo 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