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

115
Views
Hacer un objeto a partir de dos matrices

Tengo dos matrices de objetos:

 const headers = [ { ID: "1", Header: "General", }, { ID: "2", Header: "Misc", }, ... ] const terms = [ { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "Misc", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, ... ]

Y me gustaría tener un objeto que tenga cada encabezado como clave y con una matriz de todos los términos como valores:

 { "General: [ { Term: "Lorem ipsum", Definition: "Lorem ipsum", } { Term: "Lorem ipsum", Definition: "Lorem ipsum", }, ... ], "Misc": [ { Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Term: "Lorem ipsum", Definition: "Lorem ipsum", }, ... ], ... }

Supongo que hay una manera de hacerlo con .map .foreach .filter o alguna combinación, pero he estado golpeando una pared todo el día. Incluyendo simplemente tratar de poner el problema en palabras de lo que estoy tratando de hacer aquí para poder encontrar mejores resultados de búsqueda. Cualquier ayuda sería apreciada. ¡Gracias!

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

0

Una forma básica de hacerlo si no necesita propiedades adicionales sería:

 const outputObj = {} headers.forEach(header => { const headerArr = outputObj[header.Header] = []; terms.forEach(term => { const {Header, Term, Definition} = term; if (Header === header.Header) { headerArr.push({Term, Definition}); } }) })

Esto recorrería cada encabezado y agregaría la propiedad Encabezado como una clave con una matriz vacía, luego el segundo ciclo pasaría por los términos y agregaría solo el Término y la Definición (omitiendo el Encabezado).

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar una combinación de reduce y forEach para obtener su resultado. Esto solo tendría que recorrer sus matrices una vez, en lugar de recorrer los terms dos veces, como sucedería con los bucles forEach anidados.

 const obj = headers.reduce((a, o) => { a[o.Header] = []; return a; }, {}); terms.forEach(({ Header, ...x }) => obj[Header].push(x));

Explicación: reduce convierte de una matriz a un objeto. Luego forEach recorre y agrega los términos al objeto recién creado.

Aquí hay un ejemplo de trabajo:

 const headers = [ { ID: '1', Header: 'General', }, { ID: '2', Header: 'Misc', }, ]; const terms = [ { Header: 'General', Term: 'Lorem ipsum', Definition: 'Lorem ipsum', }, { Header: 'General', Term: 'Lorem ipsum', Definition: 'Lorem ipsum', }, { Header: 'Misc', Term: 'Lorem ipsum', Definition: 'Lorem ipsum', }, { Header: 'General', Term: 'Lorem ipsum', Definition: 'Lorem ipsum', }, { Header: 'General', Term: 'Lorem ipsum', Definition: 'Lorem ipsum', }, { Header: 'General', Term: 'Lorem ipsum', Definition: 'Lorem ipsum', }, ]; const obj = headers.reduce((a, o) => { a[o.Header] = []; return a; }, {}); terms.forEach(({ Header, ...x }) => obj[Header].push(x)); console.log(obj);

about 4 years ago · Juan Pablo Isaza Report

0

Puede hacer uso de forEach aquí como:

 const dict = {}; headers.forEach(({ Header }) => (dict[Header] = [])); terms.forEach(({ Header, ...rest }) => dict[Header].push(rest)); console.log(dict); 

 const headers = [ { ID: "1", Header: "General", }, { ID: "2", Header: "Misc", }, ]; const terms = [ { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "Misc", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, { Header: "General", Term: "Lorem ipsum", Definition: "Lorem ipsum", }, ]; const dict = {}; headers.forEach(({ Header }) => (dict[Header] = [])); terms.forEach(({ Header, ...rest }) => dict[Header].push(rest)); console.log(dict);

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!