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

92
Vistas
Agrupar por con nodo / Javascript

Tengo una matriz JS que también contiene matrices y cada una contiene un montón de objetos estructurados como se muestra a continuación.

 const arr1 = [ [{symbol: "xy", balance: 2155113}, {symbol: "asda", balance: 21231231}], [{symbol: "asda", balance: 6543}, {symbol: "xy", balance: 21678}] ]

Lo que necesito es una matriz de salida, que agrupe todas las matrices secundarias por la propiedad "símbolo" y agregue (+) los saldos.

Al final quiero tener una matriz como esta

 [ {symbol: xy, summedBalance: 213131313}, {symbol: yz, summedBalance: 6788767867}, ]

¿Es esto posible con javascript normal o tal vez con un módulo como lodash?

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

0

Prueba algo como esto:

 const arr1 = [ [{symbol: "xy", balance: 2155113}, {symbol: "asda", balance: 21231231}], [{symbol: "asda", balance: 6543}, {symbol: "xy", balance: 21678}] ] // Some variables const knownSymbolsArr = []; const finalArr = []; // First degroup your array const degroupedArr = arr1.flat(); // Iterate and sum balances degroupedArr.forEach(el => { // Unknown symbol, process if (knownSymbolsArr.indexOf(el.symbol) === -1) { // Sum balances when symbol is el.symbol const balance = degroupedArr.reduce((acc, val) => val.symbol === el.symbol ? acc + val.balance : acc, 0); // Add symbol in our knownSymbolsArr knownSymbolsArr.push(el.symbol); // Add data in our final array finalArr.push({ symbol: el.symbol, balance: balance }); } }); console.log(finalArr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

La solución se puede dividir en dos partes:

  1. Aplanar la matriz de entrada
  2. Agrupe los elementos de la matriz aplanada por symbol y calcule la suma.

 const ar = [ [{symbol: "xy", balance: 2155113}, {symbol: "asda", balance: 21231231}], [{symbol: "asda", balance: 6543}, {symbol: "xy", balance: 21678}] ] const flattenedAr = ar.reduce((acc, curElement) => { acc = [...acc, ...curElement]; return acc; }, []); const groupedAr = flattenedAr.reduce((group, curElement) => { const matchingElement = group.find(ele => ele.symbol === curElement.symbol); if(matchingElement) { matchingElement.summedBalance += curElement.balance; } else { group.push({ symbol: curElement.symbol, summedBalance: curElement.balance }); } return group }, []) console.log(groupedAr)

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