<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一样无限递归循环导致堆溢出
于是在原有的转换基础上增加了红框内容,完美解决问题。