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

131
Visualizações
Convert key/value array

What is the best way to convert to following array. Do I need to map over it or is there some other way with Object.values etc:

[
  {
    key: "eyeColor",
    value: "Blue/Green",
   },
   {
     key: "eyeColor",
     value: "Blue",
   },
   {
     key: "hairColor",
     value: "black",
   }
];

into:

{
  hairColor: ["Blond", "Brown"],
  eyeColor: ["Blue"],
}
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

  • Using Array#reduce, iterate over the array while updating a Map where the key is the key properties and the value is the corresponding grouped-value properties.
  • Using Array#map, iterate over the above pairs and convert to objects:

const data = [ { key: "eyeColor", value: "Blue/Green" }, { key: "eyeColor", value: "Blue" }, { key: "hairColor", value: "black" } ];

const groupedPairs = [...data.reduce((map, { key, value }) =>  map.set(key, [...(map.get(key) ?? []), value]), new Map)];

const list = groupedPairs.map(([ prop, list ]) => ({ [prop]: list }))

console.log(list);

EDIT AFTER CHANGE OF EXPECTED OUTPUT:

const data = [ { key: "eyeColor", value: "Blue/Green" }, { key: "eyeColor", value: "Blue" }, { key: "hairColor", value: "black" } ];

const res = data.reduce((acc, { key, value }) => ({
  ...acc, [key]: [...(acc[key] ?? []), value]
}), {});

console.log(res);

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