Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

116
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda