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

181
Visualizações
Combinar matrices en función del primer valor dentro de cada matriz

Tengo una matriz que se ve así:

 var arr = [ [ "2021-07-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787" ], [ "2021-08-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787" ], [ "2021-07-31T00:00:00Z", "AAAA" ], [ "2021-08-31T00:00:00Z", "BBBB" ]

]

Me gustaría transformar esto en función del primer valor (la fecha) de cada matriz. Entonces, si las fechas coinciden, se fusionarán en una sola. Entonces, la salida que estoy tratando de obtener es

 [ [ "2021-07-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787", "AAAA" ], [ "2021-08-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787", "BBBB" ]

]

Se agradecería saber cuál sería el mejor enfoque en este caso.

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

0

Use un mapa para sobrescribir los valores tal como se encuentran en la matriz. Luego use Object.entries() para crear la matriz final:

 var original = [ [1,2], [1,3], [2,3]] var final = [] var map = {} original.forEach(a => { if (!map[a[0]]) { map[a[0]] = [] } map[a[0]].push(a[1]); }); Object.entries(map).forEach(e => final.push([e[0], ...e[1]]))

Editar: Cambió la respuesta para obtener todos los valores.

about 4 years ago · Juan Pablo Isaza Relatório

0

La tarea del OP se puede lograr sin iteraciones anidadas dentro de un solo ciclo de reduce .

El enfoque subyacente es utilizar un objeto personalizado como acumulador/colector. Dicho recopilador presenta 2 propiedades... index que sirve como mapa/búsqueda basado en Object para matrices agrupadas donde la clave de grupo es siempre el primer elemento de cada matriz (a ser) procesada... y... result que va a mantenga las referencias de las matrices agrupadas mencionadas anteriormente (aún por crear) donde uno siempre inserta el segundo elemento de la matriz actualmente procesada.

 var arr = [[ "2021-07-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787", ], [ "2021-08-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787", ], [ "2021-07-31T00:00:00Z", "AAAA", ], [ "2021-08-31T00:00:00Z", "BBBB", ]]; function collectAndAggregateGroupedArrays(collector, item) { const { index, result } = collector; let groupKey = item[0]; let groupedList = index[groupKey]; if (!groupedList) { groupedList = index[groupKey] = [groupKey]; result.push(groupedList); } groupedList.push(item[1]); return collector; } console.log( arr.reduce(collectAndAggregateGroupedArrays, { index: {}, result: [], }).result );
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes probar este enfoque de reducción

 var arr = [ [ "2021-07-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787" ], [ "2021-08-31T00:00:00Z", "648429a0-00e5-4752-9d84-2857a0ea0787" ], [ "2021-07-31T00:00:00Z", "AAAA" ], [ "2021-08-31T00:00:00Z", "BBBB" ] ]; arr = arr.reduce((a, i) => { if (!a) a = []; var found = false; a.forEach(ai => { if (ai[0] == i[0]) { found = true; for (var k = 0; k < i.length; k++) { if (k > 0) ai.push(i[k]); } } }); if (!found) a.push(i); return a; }, []);
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