Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

126
Views
JS Convertir objeto con propiedades como matriz en lista de matriz de objetos

Tengo los siguientes datos entrantes (objetos reducidos para una comprensión más fácil). Mis propiedades pueden incluir cientos a miles de propiedades.

 teams = { teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'], states: ['California', 'California', 'Wisconsin', 'Arizona'] }

Tenga en cuenta que las propiedades siempre contendrán el mismo número de elementos para cada una.

Me gustaría convertirlo en una lista de matriz de objetos:

 teamsList = [ { teams: 'Lakers', states: 'California' }, { teams: 'Clippers', states: 'California' }, { teams: 'Bucks', states: 'Wisconsin' }, { teams: 'Suns', states: 'Arizona' } ]

Esto es lo que inicialmente tenía en mente y probé:

 const parseData = (obj) => { const teams = obj.teams; const states = obj.states; let newArrayList = []; teams.forEach((item, index) => { const teamData = { teams: item, states: states[index] } newArrayList.push(teamData); }) return newArrayList; }

Me pregunto si hay una forma más óptima de hacer esto.

Olvidé agregar que estoy buscando formas para que cada propiedad de objeto en la nueva lista de matrices también sea dinámica, como determinar las claves para el nuevo objeto sin escribir cada propiedad específica:

 teams.forEach((item, index) => { const teamData = { teams: item, states: states[index], n: n[index] } newArrayList.push(teamData); })

Donde n corresponde a cualquier número de posibles claves de objeto.

Gracias.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Asigne una de las matrices y use el índice para encontrar el valor coincidente en la otra matriz y devuelva un objeto.

 const teams = { teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'], states: ['California', 'California', 'Wisconsin', 'Arizona'] }; const teamList = teams.teams.map((t, i) => ({ teams: t, states: teams.states[i] })); console.log(teamList);

Si tiene muchas propiedades, itere sobre las entradas.

 const teams = { teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'], states: ['California', 'California', 'Wisconsin', 'Arizona'] }; const entries = Object.entries(teams); const [key, arr] = entries.shift(); const teamList = arr.map((val, i) => Object.fromEntries( [[key, val]].concat( entries.map(entry => [entry[0], entry[1][i]]) ) )); console.log(teamList);

about 4 years ago · Juan Pablo Isaza Report

0

Esta solución funciona determinando primero la longitud de la matriz más larga y luego creando nuevos objetos dinámicamente en función de las claves disponibles en sus datos:

 const data = { teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'], states: ['California', 'California', 'Wisconsin', 'Arizona'] }; const result = [ ...Array(Object.values(data).reduce((a, {length}) => Math.max(a, length), 0)) ].map((_, i) => Object.keys(data).reduce((a, k) => ({...a, [k]: data[k][i]}), {})); console.log(result);

about 4 years ago · Juan Pablo Isaza Report

0

Use Array.map() que iterará cada elemento y devolverá la matriz final del objeto.

 teams = { teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'], states: ['California', 'California', 'Wisconsin', 'Arizona'] }; const parseData = (obj) => { const states = teams.states; return obj.teams.map((teams, index) => ({ teams, states: states[index] })); } console.log(parseData(teams));

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!