首页 > 解决方案 > 如何获得满足条件的两个对象键的总和

问题描述

我有一个具有以下键/值的 obj

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: "",
  },
];

我想从满足条件的“creditvalue”中减去所有“debitvalue”,即帐户密钥包含 2.1.01.0001.02181

我已经尝试过 map、filter、indexOf、contains 并且所有这些都返回 []。

预期结果应该是 3.000 我从 javascript 开始,我不太了解。谢谢。

标签: javascriptmultidimensional-array

解决方案


像这样的东西会起作用。

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)

我投入了一些正则表达式来处理您数据中的逗号。


推荐阅读