recorrer objetos objeto lista eliminar elemento ejemplos convertir buscar array agregar javascript arrays ecmascript-6 javascript-objects

javascript - objetos - Crear objeto desde la matriz



objeto window javascript ejemplos (3)

Quiero crear un objeto de la lista de la matriz. Tengo una matriz que es dinámica que se supone que se vería así:

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

y con algunos javascript es6 quiero hacer un objeto como este:

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 quería crear una estructura como esta:

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

Por favor ayuda, gracias.


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}), {});

utilizando el operador moderno de propagación de objetos:

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 }), {})

Salida:

{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 primeras variables de iteración son acc = {} cur = { id: 10, color: "red" } . La función devuelve un objeto: esta es la razón por la que 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 expansió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 extiende dentro del objeto, nuestra función devuelve el valor final.


en js con es6 reducir la función 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}


puedes usar:

dynamicArray.map(value => ({''key'': value, ''val'': ''whatever you want''}));