本文主要是介绍dart遍历树及查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
省市区三级联动后端返回用户选择字符串,前端遍历查找,本来想用递归。后来看了一篇文章,作者使用js写的。目前,我在写flutter项目所以该用dart。文章地址,作者讲解的很详细,不再赘述。
/** 深度遍历树查找* @param {Array} tree* @return {Array}*/
codeToText(tree, target) {// 模拟栈,管理结点List<CityData> stack = [];stack.addAll(tree);// 根节点入栈while (stack.isNotEmpty) {// 栈顶节点出栈CityData node = stack.removeLast();if (node.districtChildren != null) {// 将候选顶点入栈,进行下一次循环stack.addAll(node.districtChildren!.reversed);}// 查找到目标,退出if (node.districtCode == target) {return node.regionName;}}
}
调用
List<String> placeList = value.split(',');
place = codeToText(cityList, placeList[0]);
深度遍历返回List(这个是想法开了点小岔,想树形改成list在查找,后来嫌麻烦,没写下去)
/*** 深度遍历树* @param {Array} tree* @return {Array}*/
codeToText(tree) {List<CityData> arr = [];List<CityData> stack = tree;while (stack.isNotEmpty) {CityData node = stack.removeLast();arr.add(node);if (node.districtChildren != null) {stack.addAll(node.districtChildren!.reversed);}}return arr;
}
这篇关于dart遍历树及查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!