如何通过jQuery或javascript在json格式的数据中计算其父代的子代递归和
我想知道如何通过jQuery或javascript在json格式的数据中为父母计算孩子的递归和。 假设我有一个json格式的数据,如下所示:如何通过jQuery或javascript在json格式的数据中计算其父代的子代递归和,javascript,jquery,Javascript,Jquery,我想知道如何通过jQuery或javascript在json格式的数据中为父母计算孩子的递归和。 假设我有一个json格式的数据,如下所示: { "data": [{ "ID": "1", "AccountName": "a", "ParentID": "", "OpeningDebit": 0, "OpeningCredit": 0 }, { "ID": "2", "
{
"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
也承担该信用/借记。这是具有父子关系的分层数据,我没有任何示例和工作,谢谢,让我试试