Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

158
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda