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

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

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 Report

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 Report

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 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!