Предположим, у меня есть данные в формате 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.
Я хочу суммировать свойства OpeningDebit
и OpeningCredit
всех дочерних узлов и установить их для их родительского узел. Помните только узел, который 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.