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

202
Vistas
combinar valores en una matriz 2d

teniendo un pequeño problema al tratar de fusionar valores en una matriz 2d.

Por ejemplo:

 const formatBids = [ [4444, 10000], [4444, 500], [4455, 500], ];

Quiero resumir el segundo parámetro de la matriz si el primer parámetro es el mismo, por lo que el resultado final es:

 [ [4444, 10500], [4455, 500], ];

He intentado lo siguiente, pero se agrega continuamente a sí mismo y produce resultados incorrectos:

 formatBids.map(bid => { const map = new Map([bid]); formatBids.forEach(arr => (arr[1] += map.get(arr[0]) ?? 0)); });

No estoy seguro de cuál es la mejor manera de abordar esto. ¿Ideas?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Simplemente podría usar un objeto como una especie de mapa y usar el primer elemento en una matriz como clave. Luego puede volver a convertirlo en un Array usando Object.entries(). Al igual que:

 const formatBids = [ [4444, 10000], [4444, 500], [4455, 500], ]; const totals = {} for (const bid of formatBids) { totals[bid[0]] = (totals[bid[0]] || 0) + bid[1]; } console.log("as object:", totals, "as array:", Object.entries(totals));

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const formatBids = [ [4444, 10000], [4444, 500], [4455, 500], ]; let merged = {} formatBids.forEach((ele) => { let key = parseInt(ele[0]); merged[key] = (merged[key] ?? 0)+ele[1]; }) let mergedArr = Object.entries(merged); console.log(mergedArr)

Esta es la otra forma de hacer esto.

  1. Ordenar la matriz según el primer índice
  2. Ingrese a la matriz si currentArr(merged Array) está vacío.
  3. Si no está vacío, verifique que el primer elemento en el último índice de currentArr sea igual al primer índice de CurrentElement.
    • en caso afirmativo, agregue el valor del segundo elemento a currentArr's[n-1][1]
    • de lo contrario, inserte currentElement en currentArr

 const formatBids = [ [4444, 10000], [4444, 500], [4455, 500], ]; var mergedArr = formatBids.sort().reduce((currentArr, currentElement) => { let n = currentArr.length; if (n === 0) return [currentElement]; if (currentElement[0] === currentArr[n - 1][0]) { currentArr[n - 1][1] += currentElement[1]; return currentArr; } else return [...currentArr, currentElement]; }, []); console.log(mergedArr)

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const formatBids = [ [4444, 10000], [4444, 500], [4455, 500], ]; const result = Object.entries(formatBids.reduce((acc, [key, value]) => { if (!acc[key]) acc[key] = value; else acc[key] += value; return acc; }, {})); console.log(result);

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