颤振继续循环过程,直到值存在



我有一个这样的数组。

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);
   }
  }

相关内容

最新更新