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

120
Visualizações
¿Cómo transformo los datos de esta API en una matriz de objetos organizados por un accesorio específico?

Obtengo estos datos de una API:

 let dataFromApi = [ { // lots of other props name: 'super cool place', address: 'address of food place', classification: 'food', }, { // lots of other props name: 'name of tech place', address: 'address of tech place', classification: 'tech', }, { // lots of other props name: 'name of clothes place', address: 'address of clothes place', classification: 'clothes', }, { // lots of other props name: 'name of of another clothes place', address: 'address of another clothes place', classification: 'clothes', }, { // lots of other props name: 'name of of another tech place', address: 'address of another tech place', classification: 'tech', }, ]

Lo que me gustaría hacer es crear una nueva matriz de objetos que tenga 2 cosas:

  1. Un apoyo llamado classification ;

  2. Un accesorio llamado establishments , que es una matriz de objetos que contiene todos los establecimientos que coinciden con el accesorio de clasificación.


Significa algo como esto:

 let establishmentsArray = [ { classification: 'food', establishments: [ { name: 'name of food place', address: 'address of food place', classification: 'food', // rest of its props }, // Lots of other food places places ], }, { classification: 'clothes', establishments: [ { name: 'name of clothes place', address: 'address of clothes place', classification: 'clothes', // rest of its props }, { name: 'name of another clothes place', address: 'address of another clothes place', classification: 'clothes', // rest of its props }, // Lots of other clothes places ], }, { classification: 'tech', establishments: [ { name: 'name of tech place', address: 'address of tech place', classification: 'tech', // rest of its props }, { name: 'name of another tech place', address: 'address of another tech place', classification: 'tech', // rest of its props }, // Lots of other tech places ], }, ]

¡Gracias por la ayuda por adelantado!

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Parece que está intentando agrupar por campo único, lo cual es un buen caso de uso para array.reduce :

 let dataFromApi = [ { // lots of other props name: 'super cool place', address: 'address of food place', classification: 'food', }, { // lots of other props name: 'name of tech place', address: 'address of tech place', classification: 'tech', }, { // lots of other props name: 'name of clothes place', address: 'address of clothes place', classification: 'clothes', }, { // lots of other props name: 'name of of another clothes place', address: 'address of another clothes place', classification: 'clothes', }, { // lots of other props name: 'name of of another tech place', address: 'address of another tech place', classification: 'tech', }, ] let output = dataFromApi.reduce((acc, cur) => { let { classification, ...rest} = cur; let prev = acc.find(x => x.classification === classification); if(!prev) { acc.push({classification, establishments: [cur]}); } else { prev.establishments.push(cur); } return acc; }, []); console.log(output);

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí hay otro ejemplo, puede usar map.reduce :

 const groupByClassification = (items) => { const grouped = items.reduce((acc, cur) => { if (cur.classification in acc) { acc[cur.classification].establishments.push(cur); return acc; } const newGroupItem: GroupedItem = { classification: cur.classification, establishments: [cur] }; return { ...acc, [cur.classification]: newGroupItem }; }, {} }); return Object.values(grouped); };
about 4 years ago · Juan Pablo Isaza Relatório

0

 let dataFromApi = [ { // lots of other props name: 'super cool place', address: 'address of food place', classification: 'food', }, { // lots of other props name: 'name of tech place', address: 'address of tech place', classification: 'tech', }, { // lots of other props name: 'name of clothes place', address: 'address of clothes place', classification: 'clothes', }, { // lots of other props name: 'name of of another clothes place', address: 'address of another clothes place', classification: 'clothes', }, { // lots of other props name: 'name of of another tech place', address: 'address of another tech place', classification: 'tech', }, ] function GroupByClassification(data){ var groupedData = {}; for (const element of data) { if(!(element.classification in groupedData)){ groupedData[element.classification] = [element]; }else{ groupedData[element.classification].push(element); } } return groupedData; } console.log(GroupByClassification(dataFromApi));

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