如何通过jQuery或javascript在json格式的数据中计算其父代的子代递归和

如何通过jQuery或javascript在json格式的数据中计算其父代的子代递归和,javascript,jquery,Javascript,Jquery,我想知道如何通过jQuery或javascript在json格式的数据中为父母计算孩子的递归和。 假设我有一个json格式的数据,如下所示: { "data": [{ "ID": "1", "AccountName": "a", "ParentID": "", "OpeningDebit": 0, "OpeningCredit": 0 }, { "ID": "2", "

我想知道如何通过jQuery或javascript在json格式的数据中为父母计算孩子的递归和。 假设我有一个json格式的数据,如下所示:

{
    "data": [{
        "ID": "1",
        "AccountName": "a",
        "ParentID": "",
        "OpeningDebit": 0,
        "OpeningCredit": 0
    }, {
        "ID": "2",
        "AccountName": "b",
        "ParentID": "1",
        "OpeningDebit": 0,
        "OpeningCredit": 0
    }, {
        "ID": "3",
        "AccountName": "c",
        "ParentID": "2",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }]
}
{
    "data": [{
        "ID": "1",
        "AccountName": "a",
        "ParentID": "",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }, {
        "ID": "2",
        "AccountName": "b",
        "ParentID": "1",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }, {
        "ID": "3",
        "AccountName": "c",
        "ParentID": "2",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }]
}
我想通过递归jQuery或javascript函数计算父代的所有子代总和,如下所示:

{
    "data": [{
        "ID": "1",
        "AccountName": "a",
        "ParentID": "",
        "OpeningDebit": 0,
        "OpeningCredit": 0
    }, {
        "ID": "2",
        "AccountName": "b",
        "ParentID": "1",
        "OpeningDebit": 0,
        "OpeningCredit": 0
    }, {
        "ID": "3",
        "AccountName": "c",
        "ParentID": "2",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }]
}
{
    "data": [{
        "ID": "1",
        "AccountName": "a",
        "ParentID": "",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }, {
        "ID": "2",
        "AccountName": "b",
        "ParentID": "1",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }, {
        "ID": "3",
        "AccountName": "c",
        "ParentID": "2",
        "OpeningDebit": 100,
        "OpeningCredit": 200
    }]
}

尝试递归reduce:

function recurseSum(element, key) {
  const children = data.filter(child => child.parentID === element.ID);
  if (children.length <= 0) {
    element['sum' + key] = element[key];
    return element[key];
  }
  element['sum' + key] = element[key] + chidlren.reduce((sum, child) => {
    return sum + recurseSum(child, key);
  }, 0);
  return element['sum' + key];
}
函数递归(元素,键){
const children=data.filter(child=>child.parentID===element.ID);
if(children.length){
返回和+递归(子项,键);
}, 0);
返回元素['sum'+键];
}

到目前为止,您尝试了什么?控制台中有错误吗?请添加一个显示实际问题的。从您的示例中,我看不到任何递归,也看不到两位代码之间的差异。我遗漏了什么吗?@IceMetalPunk我想他们说的是有一条链,其中1是2的父,3是3的父。3的借方为
100的
debit
,贷方为
200的
credit
,因此其母公司
2的借方/贷方也是相同的。反过来,它的父级
1
也承担该信用/借记。这是具有父子关系的分层数据,我没有任何示例和工作,谢谢,让我试试