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

142
Visualizações
Agrupar por estados usando reducir

He estado usando el método reduce() para agrupar por estados de apertura y cierre ( Status_111 , Status_222 , etc.) que luego crea una matriz de los Id ( item.Id ) con los que está asociado.

El código está funcionando y con un resultado esperado, pero ¿cómo evito la verificación duplicada cuando de alguna manera hace algo similar y crea matrices en blanco (los estados de apertura y cierre pueden tener la misma identificación (por ejemplo, Status_111 ), me refiero a esta sección de bloque:

 if (item.Open && !obj[item.Open]) { obj[item.Open] = { Open: [], Close: [] } } if (item.Close && !obj[item.Close]) { obj[item.Close] = { Open: [], Close: [] } }

Uso:

 const items = [ { Id: 100, Open: 'Status_111', Close: 'Status_111' }, { Id: 200, Open: 'Status_111', Close: 'Status_222' }, { Id: 300, Open: 'Status_333', Close: 'Status_444' } ] function groupByOpenAndClose(items) { return items.reduce(function (obj, item) { if (item.Open && !obj[item.Open]) { obj[item.Open] = { Open: [], Close: [] } } if (item.Close && !obj[item.Close]) { obj[item.Close] = { Open: [], Close: [] } } if (obj[item.Open]) { obj[item.Open].Open.push(item.Id) } if (obj[item.Close]) { obj[item.Close].Close.push(item.Id) } return obj }, {}); } console.log(groupByOpenAndClose(items));

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

0

Una reduce con un forEach es una forma de llegar allí.

 const items = [{ Id: 100, Open: 'Status_111', Close: 'Status_111' }, { Id: 200, Open: 'Status_111', Close: 'Status_222' }, { Id: 300, Open: 'Status_333', Close: 'Status_444' } ] let status = items.reduce((b, a) => { ['Open', 'Close'].forEach(s => { b[a[s]] = b[a[s]] || {Open: [], Close: []} }); return b }, {}); items.forEach(s => { status[s.Open].Open.push(s.Id); status[s.Close].Close.push(s.Id) }); console.log(status)

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