gpt4 book ai didi

javascript - 如何通过jQuery或javascript获取/计算其父节点的子节点总和

转载 作者:行者123 更新时间:2023-12-01 15:39:46 26 4
gpt4 key购买 nike

假设我在 中有一个数据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
},
{
"ID": "4",
"AccountName": "d",
"ParentID": "2",
"OpeningDebit": 50,
"OpeningCredit": 10
}
]
}
ID 维护的父子关系和 ParentID特性 。喜欢 ID 的记录2 是 ID 记录的子记录1.
我想总结 OpeningDebitOpeningCredit所有子节点的属性并将其设置为它们的父节点。只记住 Transactional 的节点(在他们的属性 Type 中提到),具有值。
我想要的结果是
{
"data": [
{
"ID": "1",
"AccountName": "a",
"ParentID": "",
"OpeningDebit": 150,
"OpeningCredit": 210
},
{
"ID": "2",
"AccountName": "b",
"ParentID": "1",
"OpeningDebit": 150,
"OpeningCredit": 210
},
{
"ID": "3",
"AccountName": "c",
"ParentID": "2",
"OpeningDebit": 100,
"OpeningCredit": 200
},
{
"ID": "4",
"AccountName": "d",
"ParentID": "2",
"OpeningDebit": 50,
"OpeningCredit": 10
}
]
}

我要 javascript 可以为我的所有父节点求和的函数。可能可以通过递归函数来实现,因为这是第 n 级分层数据,比如有些节点有 3 级,有些有 5 级。

最佳答案

创建一个递归函数来计算 OpeningDebit 的总和和 OpeningCredit ,当数据没有 child 时的基本情况,返回它自己的值
下面的片段可以帮助你

const { data } = {
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,
},
{
ID: "4",
AccountName: "d",
ParentID: "2",
OpeningDebit: 50,
OpeningCredit: 10,
},
],
}

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,
OpeningDebit: getSum(d, "OpeningDebit"),
OpeningCredit: getSum(d, "OpeningCredit"),
}
})

console.log({ data: res })

关于javascript - 如何通过jQuery或javascript获取/计算其父节点的子节点总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63276061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com