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

154
Visualizações
agrupar y sumar pares dobles de números incluso si el orden de los pares es diferente pero los mismos pares de números

Necesito ayuda para agrupar y sumar un doble par de números aunque el orden sea diferente, lo importante es que esos dobles pares de números son iguales, tengo este código con js y unserscorejs pero no sé cómo comprobar si hay un emparejar con los mismos números en diferente orden:

Ejemplo lógico:

 02 00(1.67$) -- > +1.67$ 02 03(1.67$) 02 00(1.67$) -- > + 1.67$ 00 03(1.67$) -- > +1.67$ 00 00(1.67$) 03 00(1.67$) -- > +1.67$

Resultado deseado:

 02 00(3.33$) --> 02 00 + 02 00 02 03(1.67$) 00 03(3.33$) --> 00 03 + 03 00 00 00(1.67$)

Mi código:

 let pairs = [{pair: '02 00',money: 1.67},{pair: '02 03',money: 1.67},{pair: '02 00',money: 1.67},{pair: '00 03',money: 1.67},{pair: '00 00',money: 1.67},{pair: '03 00',money: 1.67}] var groups = _.groupBy(pairs, 'pair'); const result = _.map(groups, (value: any, key: any) =>{ return { pair: key, money: _.reduce(value, (total: any, o: { money: any; }) =>{ return total + o.money; }, 0) }; }); //output //[{pair: '02 00',money: 3.33},{pair: '02 03',money: 1.67},{pair: '00 03',money: 1.67},{pair: '00 00',money: 1.67},{pair: '03 00',money: 1.67}] //expected output //[{pair: '02 00',money: 3.33},{pair: '02 03',money: 1.67},{pair: '00 03',money: 3.33},{pair: '00 00',money: 1.67}]

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

0

para lidiar con esto, solo necesita hacer un poco de manipulación de cadenas para comparar los pares. Publicaré el código y luego lo revisaré paso a paso.

 let pairs = [ { pair: '02 00', money: 1.67 }, { pair: '02 03', money: 1.67 }, { pair: '02 00', money: 1.67 }, { pair: '00 03', money: 1.67 }, { pair: '00 00', money: 1.67 }, { pair: '03 00', money: 1.67 } ] const groupAndSum = (array) => { return Object.entries( array.reduce((acc, el) => { if (el.pair in acc) { acc[el.pair] += el.money } else { const key = el.pair.split(' ').reverse().join(' ') if (key in acc) acc[key] += el.money else acc[el.pair] = el.money } return acc }, {}) ) .map(([pair, money]) => ({ pair, money })) } console.log(groupAndSum(pairs))
 .as-console-wrapper { position: absolute; top: 0; min-height: 100vh; }

Vamos de adentro hacia afuera.

  1. Primero, estamos reduciendo la matriz a un objeto donde las claves son los pares y los valores son las sumas de esos pares. Es decir, después de recorrer la matriz con la función de reducción, obtenemos un objeto como este:
 { '02 00': 3.34, '02 03': 1.67, '00 03': 3.34, '00 00': 1.67 }

Obtenemos esto revisando los objetos en la matriz de pares 1 por 1. Verificamos si existe un cierto par en el objeto acumulador.

  • Si lo hace, simplemente incrementamos el valor existente en el objeto acumulador para esa clave por el dinero del objeto actual que hemos alcanzado en nuestra iteración.
  • Si no es así, dividimos el par, lo invertimos y lo volvemos a unir con un espacio para ver si esa cadena es una clave que ya existe en el objeto acumulador.
    • Si existe, incrementamos el valor de la clave existente por el dinero del objeto que hemos alcanzado en nuestra iteración.
    • Si no existe, creamos una nueva clave en nuestro objeto acumulador con el par del objeto actual como clave y el dinero como valor inicial.
  1. Una vez que hagamos eso, podemos tomar las entradas de ese objeto y convertirlas en una matriz con Object.entries. Eso debería darte una matriz como esta:
 [ [ '02 00', 3.34 ], [ '02 03', 1.67 ], [ '00 03', 3.34 ], [ '00 00', 1.67 ] ]
  1. Una vez que tenemos la matriz, podemos iterar sobre ella para volver a convertirla en el objeto que queremos, usando map. Esto debería convertir la matriz anterior en el siguiente resultado:
 [ { pair: '02 00', money: 3.34 }, { pair: '02 03', money: 1.67 }, { pair: '00 03', money: 3.34 }, { pair: '00 00', money: 1.67 } ]
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