JavaScript如何遍历多维数组,采用递归的方式

JavaScript012

JavaScript如何遍历多维数组,采用递归的方式,第1张

function getArrayValue(){ var arr = new Array(['a','b','c'],['d','e','f'])//二维数组 for(i=0i<arr.lengthi++){ var tmpArr = new Array()tmpArr = arr[i]for(j=0j<tmpArr.lengthj++){ var tmp = tmpArr[j]alert(tmp) } } } 给你一个例子,多维的话可以在循环。(可能方法比较笨,但是好用)

<!DOCTYPE HTML>

<html lang="en-US">

<head>

<meta charset="UTF-8">

<title>御用递归,下回分解</title>

<style type="text/css">

</style>

<script type="text/javascript">

var array=[

{"id":1,"child":[{"name":"11"},{"name":"12"},{"name":"13"}]}, 

{"id":1,"child":[{"name":"21"},{"name":"22"},{"name":"23"}]}, 

{"id":1,"child":[{"name":"31"},{"name":"32"},{"name":"33"}]}, 

]

for ( var i = 0 i < array[0].child.length i++)

{

for ( var j = 0 j < array[1].child.length j++)

{

for ( var k = 0 k < array[2].child.lengthk++)

{

document.write(array[0].child[i].name + "," + array[1].child[j].name + "," + array[2].child[k].name + "<br / >")

}

}

}

</script>

</head>

<body>

</body>

</html>

最近做el-tree组件开发的时候,选中某条会报这种错误。这句话的意思是堆超出了最大范围。

因为用例模块3333的id为3,父模块ID也是3。于是怀疑是数组转tree递归的时候导致堆溢出。这个时候打印了一下,数组转tree后的数据,果然是转换的时候逻辑写错了,导致id和父模块id一样无限递归循环导致堆溢出

于是在原有的转换基础上增加了红框内容,完美解决问题。