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

94
Vistas
Cómo obtener la suma de dos claves de objeto que cumplen una condición

Tengo un obj que tiene los siguientes valores/clave

 var pay = [ { journal: 23, regdate: "31/08/2021", account: "2.1.01.0001.02181 Folha de Pagamento:Salarios a Pagar", debitvalue: "3003,58", creditvalue: "", itemdescrip: "Valor ref folha de pgto, mês 08/2021", name: "", branch: "", costcenter: "", message: "", }, { journal: 23, regdate: "31/08/2021", account: "2.1.01.0001.02181 Folha de Pagamento:Salarios a Pagar", debitvalue: "", creditvalue: "4003,58", itemdescrip: "Valor ref folha de pgto, mês 08/2021", name: "", branch: "", costcenter: "", message: "", }, ];

Me gustaría restar todo el "valor de débito" del "valor de crédito" donde se cumple una condición, es decir, la clave de cuenta contiene 2.1.01.0001.02181

Probé map, filter, indexOf, contains y todo lo cual devuelve [].

El resultado esperado debería ser 3.000 Estoy comenzando con javascript y no sé mucho. Gracias.

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

0

Algo como esto funcionará.

 let diff pay.forEach((obj) => { if (obj.account.includes('2.1.01.0001.02181')) { let credit = parseInt(obj['creditvalue'].replace(/,/g, '.')) || 0 let debit = parseInt(obj['debitvalue'].replace(/,/g, '.')) || 0 diff = credit - debit } }) console.log(diff)

Lancé algunas expresiones regulares para lidiar con las comas en sus datos.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede hacerlo con funciones de matriz simples como .reduce

 var pay = [ { journal: 23, regdate: "31/08/2021", account: "4.1.01.0001.04200 Despesas com folha de pagamento:Salarios", debitvalue: "4003.58", creditvalue: "", itemdescrip: "Valor ref folha de pgto, mês 08/2021", name: "", branch: "", costcenter: "", message: "", }, { journal: 23, regdate: "31/08/2021", account: "2.1.01.0001.02181 Folha de Pagamento:Salarios a Pagar", debitvalue: "", creditvalue: "4003.58", itemdescrip: "Valor ref folha de pgto, mês 08/2021", name: "", branch: "", costcenter: "", message: "", }, ]; const totalAmount = pay.reduce( (total, currentPay) => { if (currentPay.account.includes("2.1.01.0001.02181")) { total = total + +currentPay.creditvalue - currentPay.debitvalue; } return total; }, 0) console.log(totalAmount);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para lograr mis necesidades utilicé la colaboración de los muchachos para implementar el siguiente código

 const totalAmount = pay.reduce( (total, currentPay) => { if (currentPay.account.includes('2.1.01.0001.02181')) { var d = parseFloat(currentPay.debitvalue.replace(/,/g, '.')) || 0; var c = parseFloat(currentPay.creditvalue.replace(/,/g, '.')) || 0; total += +c - d; } return total; }, 0)

¡Gracias chicos!

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