我有一个这样的数组。
relatives = [
{
'name': 'john',
'relation': 'GrandFather',
'subrelatives': [
{
'name': 'julia',
'relation': 'Daughter',
'subrelatives': [
{
'name': 'julia',
'relation': 'Daughter',
},
{
'name': 'alia',
'relation': 'Daughter',
}
]
},
{
'name': 'alia',
'relation': 'Daughter',
}
]
}
];
如果存在子亲属,我需要做的是继续for循环,并在数组中添加值。
现在,对于第一个子亲属,我正在这样做
for (var i = 1; i < res_data['data']['relatives'].length; i++) {
print(i);
nodes.add(gp.Node.Id(i));
for (var j = 1; j < res_data['data']['relatives']['subrelatives'][i].length; j++) {
nodes.add(gp.Node.Id(i + j));
}
}
但这将对第一个子亲属起作用,它将在一段时间内继续排列它的百分之一。我需要做的是,如果子相关性有子相关性,那么它将继续循环。
尝试学习递归算法。
这是我的数据。
{
"items": [
{
"title": "Item 1",
"items": [
{
"title": "Item 1.1",
"items": [
{
"title": "Item 1.1.1",
"items": []
},
{
"title": "Item 1.1.2",
"items": []
}
]
},
{
"title": "Item 1.2",
"items": []
},
{
"title": "Item 1.3",
"items": []
}
]
},
{
"title": "Item 2",
"items": [
{
"title": "Item 2.1",
"items": []
}
]
},
{
"title": "Item 3",
"items": []
}
]
}
这是我的递归函数。
void traverseTree(
String parantId, Map<String, dynamic> itemdata, int i) {
final int lvl = i;
maxLvl = i + 1;
if (itemdata['items'] == []) {
return;
}
for (var item in itemdata['items']) {
item['parantId'] = parantId;
item['level'] = lvl;
item['exp'] = false;
// print("lvl $lvl = parant = ${item['parantId']} ${item['title']}");
traverseTree(item['title'], item, lvl + 1);
}
}