1. var array = [{
2. name: '浙江省',
3. leaf: 1,
4. children: [{
5. name: '杭州市',
6. leaf: 1,
7. children: [{
8. name: '西湖区',
9. leaf: 0,
10. children: null
11. },
12. {
13. name: '萧山区',
14. leaf: 0,
15. children: ''
16. }]
17. },
18. {
19. name: '温州市',
20. leaf: 1,
21. children: [{
22. name: '乐清市',
23. leaf: 0,
24. children: null
25. },
26. {
27. name: '苍南县',
28. leaf: 0,
29. children: ''
30. }]
31. }]
32. }];
33. function getReionByRegionName(name, array) {
34. var result = null;
35. for (var i = 0; i < array.length; i++) {
36. if (name == array[i].name) {
37. result = array[i];
38. break;
39. } else if (array[i].children != null && array[i].children != '') {
40. result = getReionByRegionName(name, array[i].children);
41. if (result != null) break;
42. }
43. }
44. return result;
45. }
46. //console.log是firebug, Ext.encode是exjs的,我只是为了输出验证,你改为自己的.
47. console.log(Ext.encode(array));
48. console.log(Ext.encode(getReionByRegionName('浙江省', array)));
49. console.log(Ext.encode(getReionByRegionName('杭州市', array)));
50. console.log(Ext.encode(getReionByRegionName('西湖区', array)));
51. console.log(Ext.encode(getReionByRegionName('萧山区', array)));
52. console.log(Ext.encode(getReionByRegionName('温州市', array)));
53. console.log(Ext.encode(getReionByRegionName('乐清市', array)));
54. console.log(Ext.encode(getReionByRegionName('苍南县', array)));
var array = [{
name: '浙江省',
leaf: 1,
children: [{
name: '杭州市',
leaf: 1,
children: [{
name: '西湖区',
leaf: 0,
children: null
},
{
name: '萧山区',
leaf: 0,
children: ''
}]
},
{
name: '温州市',
leaf: 1,
children: [{
name: '乐清市',
leaf: 0,
children: null
},
{
name: '苍南县',
leaf: 0,
children: ''
}]
}]
}];
function getReionByRegionName(name, array) {
var result = null;
for (var i = 0; i < array.length; i++) {
if (name == array[i].name) {
result = array[i];
break;
} else if (array[i].children != null && array[i].children != '') {
result = getReionByRegionName(name, array[i].children);
if (result != null) break;
}
}
return result;
}
//console.log是firebug, Ext.encode是exjs的,我只是为了输出验证,你改为自己的.
console.log(Ext.encode(array));
console.log(Ext.encode(getReionByRegionName('浙江省', array)));
console.log(Ext.encode(getReionByRegionName('杭州市', array)));
console.log(Ext.encode(getReionByRegionName('西湖区', array)));
console.log(Ext.encode(getReionByRegionName('萧山区', array)));
console.log(Ext.encode(getReionByRegionName('温州市', array)));
console.log(Ext.encode(getReionByRegionName('乐清市', array)));
console.log(Ext.encode(getReionByRegionName('苍南县', array)));
//firebug输出:
[{"name":" 浙江省","leaf":1,"children":[{"name":"杭州市","leaf":1,"children":[{"name":"西湖区","leaf":0,"children":null},{"name":"萧山区","leaf":0,"children":""}]}, {"name":"温州市","leaf":1,"children":[{"name":"乐清市","leaf":0,"children":null},{"name":"苍南县","leaf":0,"children":""}]}]}]
{"name":" 浙江省","leaf":1,"children":[{"name":"杭州市","leaf":1,"children":[{"name":"西湖区","leaf":0,"children":null},{"name":"萧山区","leaf":0,"children":""}]}, {"name":"温州市","leaf":1,"children":[{"name":"乐清市","leaf":0,"children":null},{"name":"苍南县","leaf":0,"children":""}]}]}
{"name":"杭州市","leaf":1,"children":[{"name":"西湖区","leaf":0,"children":null},{"name":"萧山区","leaf":0,"children":""}]}
{"name":"西湖区","leaf":0,"children":null}
{"name":"萧山区","leaf":0,"children":""}
{"name":"温州市","leaf":1,"children":[{"name":"乐清市","leaf":0,"children":null},{"name":"苍南县","leaf":0,"children":""}]}
{"name":"乐清市","leaf":0,"children":null}
{"name":"苍南县","leaf":0,"children":""}
分享到:
相关推荐
JavaScript函数声明与递归调用是编程语言的基础概念,尤其对于JavaScript初学者至关重要。JavaScript的函数具有独特的特性,因为它们是顶级对象,这意味着它们可以像普通变量一样被处理。理解这些概念有助于编写更加...
### JavaScript支持的最大递归调用次数分析知识点 在JavaScript中,每个函数调用都会占用一定的堆栈空间,因此每个JavaScript引擎都有一个堆栈大小的限制,这个限制决定了可以进行的最大递归调用次数。如果递归调用...
Memoizer 函数可以用来将递归调用转换为缓存结果,减少递归次数,提高 JavaScript 的运行速度。 在文章中,作者提供了一个 Memoizer 函数的实现,用于处理更多类型的递归函数。该函数可以适应不同的递归函数,包括...
不管是什么编程语言,... 那么问题来了,我们知道在Javascript中,有一类函数叫做匿名函数,没有名称,怎么调用呢?当然你可以说,可以把匿名函数赋值给一个常量: const factorial = function(n){ if (n <= 1) {
免费分享 自己写的 递归计算器 例如: 2+2/3+(33+6+(3-3*(33.44-4+(33*44.3/33+(333-33))))) 像这样的复杂运算,能够快速得出结果, 不调用系统的快速计算方法; ps: javascript像这样复杂的连接公式 是得不出结果的;
在实现递归调用时,`setTimeout`是实现周期性任务的一个常见选择。然而,如果不正确地使用它,可能会导致错误。本文将深入探讨在使用`setTimeout`进行递归调用时出现的问题以及解决方案。 首先,让我们分析问题的...
本主题聚焦于如何利用树数据结构和JSP(JavaServer Pages)页面的递归调用来构建菜单树。下面我们将深入探讨相关知识点。 1. **树数据结构**:树是数据结构的一种,由节点(或称为顶点)和边组成,每个节点可以有零...
- 谨慎处理JavaScript的调用,避免无限递归或性能消耗大的操作。 - 对于敏感操作,确保只有可信的JavaScript代码能调用QT的API。 5. **调试**: - 可以利用QT的调试工具,如`qDebug()`,以及浏览器的开发者工具...
递归与循环 对于不同类型的需要重复计算的问题,循环和递归两种方法各有所长...其他语法方面,尽量接近Javascript的规范。 代码如下: //pseudo code of a loop //while形式 function loop(arguments){ //结果的初始值 r
同时,递归调用时可能会增加服务器的负载,因此要合理控制递归深度,避免服务器压力过大。 通过以上知识点的介绍,我们可以了解到在实现PHP与jQuery递归调用POST循环请求时,需要使用到的技术点和注意事项。在实际...
JavaScript递归算法生成树形菜单是一种常见的编程技巧,主要用于处理具有层级关系的数据,例如网站的导航菜单、组织结构等。在本示例中,我们看到如何利用递归方法将一个对象数组转换为HTML的树形结构,从而在网页上...
函数首先检查输入n的有效性,如n小于0则返回错误信息,n等于0或1则直接返回相应的斐波那契数,否则根据斐波那契数列的定义,通过递归调用recursion(n - 1)和recursion(n - 2)求得第n项的值。 总之,JavaScript的...
JavaScript递归打印Document层次关系是理解DOM(Document Object Model)结构的一种有效方法。DOM是HTML和XML文档的抽象表示,它将文档结构转化为一个由节点构成的树形结构,允许我们通过编程方式访问和操作文档内容...
5. **尾递归**:在某些语言(如Scheme或现代JavaScript)中,尾递归优化可以使无限递归变为有限的堆栈空间,因为最后一项操作是递归调用。 6. **记忆化**:为了提高效率,可以使用缓存存储之前计算过的值,避免重复...
基本情况是指函数停止递归调用的条件,通常是当问题达到最简单形式时。递归情况则是函数调用自身以解决问题的一个更小部分。 在JavaScript中,递归函数的用法和定义遵循以下几个要点: 1. 递归必须有一个明确的...
基本情况是问题最简单的情况,可以直接求解,而不需要进一步的递归调用。递归情况则是将问题分解成更小的子问题,然后对每个子问题进行递归调用。在每次递归调用中,问题的规模逐渐减小,直到达到基本情况为止。 ...
但递归也有其缺点,例如在每一次递归调用中都需要消耗一定的内存空间来保存中间状态信息,如果递归深度过大(如圆盘数量非常多),可能会导致栈溢出错误。另外,递归调用本身也会有一定的性能开销,如果递归的层数...