Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!