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

380
Visualizações
¿Cómo sumar/agrupar una matriz 2d por múltiples "columnas/criterios" usando reduce() en Javascript?

He estado dando vueltas con esto, pero no sé cómo agregar una columna o un criterio. Esto agrupa por la primera "columna", pero ¿cómo hacer que se agrupe también por la última columna?

Esta es la respuesta :

 let array = [[3, 'name', 'old'],[4, 'lastname','young'],[2, 'name', 'old'],[4, 'lastname','old']]; let result = Object.values(array.reduce((c, v) => { if (c[v[1]]) c[v[1]][0] += v[0]; //Add the first element if already exist else c[v[1]] = v; //Assign the value if does not exist return c; }, {})); console.log(result);

Resultado Esperado

 result = [ [5, 'name', 'old'], [4, 'lastname','young'], [4, 'lastname','old'] ];

¡Gracias!

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

0

En su situación, como una simple modificación, por ejemplo, ¿qué tal usar los valores de las columnas "B" y "C" como clave del objeto de reduce de la siguiente manera?

Guión modificado:

 let array = [[3, 'name', 'old'], [4, 'lastname', 'young'], [2, 'name', 'old'], [4, 'lastname', 'old']]; let result = Object.values(array.reduce((c, v) => { const k = v[1] + v[2]; if (c[k]) c[k][0] += v[0]; else c[k] = v; return c; }, {})); console.log(result);

  • Cuando se ejecuta este script, se obtiene el siguiente resultado.

     [ [ 5, 'name', 'old' ], [ 4, 'lastname', 'young' ], [ 4, 'lastname', 'old' ] ]
about 4 years ago · Juan Pablo Isaza Relatório

0

¿Es esto lo que estás buscando?

 function teste() { let array = [[3, 'name', 'old'], [4, 'lastname', 'young'], [2, 'name', 'old'], [4, 'lastname', 'old']]; let result = Object.values(array.reduce((c, v) => { if (c[v[1]]) c[v[1]][0] += v[0]; else c[v[1]] = v; if (c[v[2]]) c[v[1]][0] += v[0]; else c[v[2]] = v; return c; }, {})); console.log(result); } Execution log 2:03:43 PM Notice Execution started 2:03:43 PM Info [ [ 7, 'name', 'old' ], [ 7, 'name', 'old' ], [ 12, 'lastname', 'young' ], [ 12, 'lastname', 'young' ] ] 2:03:44 PM Notice Execution completed
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