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

105
Visualizações
Cómo agregar una etiqueta a un valor de objeto en javascript

Tengo una matriz de objetos agrupados por índice y me gustaría reestructurar y agregar etiquetas a la respuesta.

Esta es mi matriz original:

 let cars = [{'make': 'audi', 'model': 'RS3', 'transmition': 'automatic'}, {'make': 'audi', 'model': 'RS7', 'transmition': 'dual-clutch'}, {'make': 'bmw', 'model': '325is', 'transmition': 'manual'}, {'make': 'bmw', 'model': 'M2', 'transmition': 'dual-clutch'}]

Aquí está el código fuente utilizado para agrupar la matriz por marca:

 var groupedByMake = _.groupBy( cars, "make" );

La respuesta se ve así:

 { 'audi':[{'model': 'RS3', 'transmition': 'automatic'}, {'model': 'RS7', 'transmition': 'dual-clutch'}], 'bmw':[{'model': '325is', 'transmition': 'manual'}, {'model': 'M2', 'transmition': 'dual-clutch'}] }

Mi resultado deseado debería verse así:

 [{ 'make': 'audi', 'types': [{'model': 'RS3', 'transmition': 'automatic'}, {'model': 'RS7', 'transmition': 'dual-clutch'}] },{ 'make': 'bmw', 'types': [{'model': '325is', 'transmition': 'manual'}, {'model': 'M2', 'transmition': 'dual-clutch'}] }]

¿Es posible lograr esto usando JavaScript? Si es así, ¿puedo obtener ayuda para lograr esta tarea?

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

0

 const cars = [{'make': 'audi', 'model': 'RS3', 'transmition': 'automatic'}, {'make': 'audi', 'model': 'RS7', 'transmition': 'dual-clutch'}, {'make': 'bmw', 'model': '325is', 'transmition': 'manual'}, {'make': 'bmw', 'model': 'M2', 'transmition': 'dual-clutch'}]; const groupBy = (array, key) => { return array.reduce((acc, item) => { const keyValue = item[key]; const existingGroup = acc.find((group) => group.key === keyValue); if (existingGroup) { existingGroup.items.push(item); } else { // remove make from item const { make, ...rest } = item; acc.push({ key: keyValue, items: [rest] }); } return acc; }, []); } console.log(JSON.stringify(groupBy(cars, 'make'), null, 2));

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar array.reduce para convertir una matriz en otra y controlar si devuelve un nuevo elemento o acumula valores en uno existente ( prev ):

 let cars = [{'make': 'audi', 'model': 'RS3', 'transmition': 'automatic'}, {'make': 'audi', 'model': 'RS7', 'transmition': 'dual-clutch'}, {'make': 'bmw', 'model': '325is', 'transmition': 'manual'}, {'make': 'bmw', 'model': 'M2', 'transmition': 'dual-clutch'}]; let output = cars.reduce((acc, cur) => { let {make, ...obj} = cur; let prev = acc.find(x => x.make === make); if(!prev) { acc.push({make,types:[obj]}) } else { prev.types.push(obj); } return acc; }, []); console.log(output);

about 4 years ago · Juan Pablo Isaza Relatório

0

Si desea mantener su groupby tal como está (usando lodash):

 // Result from lodash var groupedByMake = { 'audi':[{'model': 'RS3', 'transmition': 'automatic'}, {'model': 'RS7', 'transmition': 'dual-clutch'}], 'bmw':[{'model': '325is', 'transmition': 'manual'}, {'model': 'M2', 'transmition': 'dual-clutch'}] } const result = Object.keys(groupedByMake).map(make => ({make, types: groupedByMake [make]})); console.log(result);

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