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

283
Visualizações
¿Cómo puedo agrupar los valores en el objeto y colocarlos en una matriz en JS?

Básicamente, recibo un conjunto de datos como el que proporcioné a continuación y, sin embargo, todos siguen el mismo patrón y tienen la misma cantidad de claves y valores; Estoy buscando agruparlos de manera que la "creación" permanezca igual, y si la matriz tiene más objetos con la misma "creación", los valores del "modelo" se insertan en una matriz como se muestra en el ejemplo 2.

He intentado usar un bucle, pero no pude encontrar la manera de producir 2 matrices diferentes para una sola marca.

 const cars = [ { 'make': 'audi', 'model': 'r8', 'year': '2012' }, { 'make': 'audi', 'model': 'rs5', 'year': '2013' } ];

Y aquí está el resultado final que estoy buscando:

 const carByMake = [ { 'make': 'audi', 'models': ['r8', 'rs5'] 'years': ['2012, 2013'] }, ];
about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

puedes hacer esto

 const cars = [ { make: "audi", model: "r8", year: "2012", }, { make: "audi", model: "rs5", year: "2013", }, { make: "audi", model: "rs6", year: "2013", }, { make: "bmw", model: "x5", year: "2013", }, { make: "bmw", model: "x6", year: "2013", }, ]; let tempArr = []; let unique = cars.map((data) => { let filterDataArr = tempArr.filter( (filterData) => filterData.make == data.make ); if (filterDataArr && filterDataArr.length > 0) { filterDataArr[0].models = [...filterDataArr[0].models, data.model]; filterDataArr[0].years = [...filterDataArr[0].years, data.year]; } else { let dataArr = { make: data.make, models: [data.model], years: [data.year], }; tempArr.push(dataArr); } }); console.log("tempArr=>", tempArr);
about 4 years ago · Santiago Gelvez Relatório

0

Hay una forma más fundamental de hacer lo que pides.

Este es un problema muy básico, y debe resolverse usando una solución básica. No es necesario filtrar los resultados, ya que un ciclo simple con una declaración if puede producir los resultados que solicita. Fundamentalmente, la solución para este problema es técnicamente un algoritmo de clasificación, muy simple.

Podría usar un ciclo "for of" , pero creo que este es un excelente ejemplo en el que un ciclo forEach muestra cuán poderoso es. ForEach se abstrae un nivel por encima de sus bucles while & for de nivel bajo. Esa capa extra de abstracción permite pasar una función al bucle forEach. Cada vez (de ahí el nombre "cada uno"), el ciclo forEach itera, se ejecuta la devolución de llamada de forEach, hasta que la matriz a la que se llamó el ciclo forEach se haya iterado por completo (hay excepciones, pero no quiero bajarme pista).

Puede usar el ciclo forEach para resolver su problema. Esa solución se demuestra a continuación. Documenté el código con JSDoc para que pueda copiarlo y pegarlo en su editor, y mostrar los parámetros y tipos en su información sobre herramientas/widget flotante.

 const cars = [ { make: 'audi', model: 'r8', year: 2012 }, { make: 'audi', model: 'rs5', year: 2013 }, ]; /** * @param {string} make - The make that you want to return the models & years for * @param {{make: string, model: string, year: number}[]} cars - An array of car objects that include the model make & year * @return {{make: string, models: string[], years: string[]}} * */ function sortByMake(make, cars) { const models = []; const years = []; cars.forEach((car) => { if (car.make.toLowerCase() === make.toLowerCase()) { models.push(car.model); years.push(car.year); } }); return { make: make, models: models, years: years }; } console.log(sortByMake('Audi', cars)); // OUTPUT: // $ node ./index.js // {make: 'Audi', models: ['r8', 'rs5'], years: [2012, 2013]}
about 4 years ago · Santiago Gelvez 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