【发布时间】:2021-12-26 07:28:27
【问题描述】:
我有一个 Json 数据,它有父、子、孙等关系,就像一棵树 他们每个人都有OpeningDebit和OpeningCredit。
我想获取每个孩子和大孩子的所有借方和贷方的总和,并将其添加到 parentID 为 0 的父级
const { data } = {
data: [ {
ID: '1',
AccountName: "Assets",
ParentID: "0",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '2',
AccountName: "Liabilities",
ParentID: "0",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '3',
AccountName: "Revenue",
ParentID: "0",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '4',
AccountName: "Expenses",
ParentID: "0",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '5',
AccountName: "Eqity",
ParentID: "0",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '39',
AccountName: "aa",
ParentID: "38",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '40',
AccountName: "aaa",
ParentID: "38",
OpeningDebit: 60,
OpeningCredit: 120,
},
{
ID: '41',
AccountName: "bb",
ParentID: "39",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '42',
AccountName: "bbb",
ParentID: "39",
OpeningDebit: 180,
OpeningCredit: 240,
},
{
ID: '6',
AccountName: "Inventory",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '7',
AccountName: "Banks",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '8',
AccountName: "Accounts receivable",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '9',
AccountName: "Current assets",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '10',
AccountName: "Other Assets",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '11',
AccountName: "Petty Cash",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '38',
AccountName: "a",
ParentID: "1",
OpeningDebit: 0,
OpeningCredit: 0,
},
{
ID: '43',
AccountName: "bbbb",
ParentID: "41",
OpeningDebit: 300,
OpeningCredit: 360,
},
] ,
}
我试过了,但它说超出了最大调用堆栈大小
const res = data.map((d) => {
const getSum = (obj, prop) => {
const children = data.filter(({ ParentID}) => ParentID=== obj.ID)
if (children.length === 0) return obj[prop]
return children.reduce((acc, c) => acc + getSum(c, prop), 0)
}
return {
...d,
debit: getSum(d, "OpeningDebit"),
credit: getSum(d, "OpeningCredit"),
}
})
console.log({ data: res })
【问题讨论】:
-
向我们展示您的尝试,我们将尝试调试它
-
parent_id === obj.id:parent_id和id都不存在于您的数据中 -
感谢您提及我已修复它,但我仍然没有得到任何东西
-
#ProGu 谢谢它解决了问题请在回答中写下你的评论我会投票非常感谢
标签: javascript php jquery json laravel