请教js数组递归的问题

现在有一个json数组,
var array=[
{"id":1,"child":[{"name":"11"},{"name":"12"},{"name":"13"}]},(child里有n个name)
{"id":1,"child":[{"name":"21"},{"name":"22"},{"name":"23"}]},(child里有m个name)
{"id":1,"child":[{"name":"31"},{"name":"32"},{"name":"33"}]},(child里有k个name)
.....
];
如何递归输出:
11,21,31
11,21,32
11,21,33
11,22,31
11,22,32
11,22,33
11,23,31
11,23,32
11,23,33
......
即输出n*m*k行。

<!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.length;k++)
{
document.write(array[0].child[i].name + "," + array[1].child[j].name + "," + array[2].child[k].name + "<br / >");
}
}
}
</script>
</head>
<body>
</body>
</html>

追问

可是array长度是不确定的啊

追答都说了,下回分解。。。
递归在此,汝讲诚信,采纳即可。

<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"}]}
];
    var recursionSub = function (list, count, array, ind, start, indexs)
    {
    start++;
    if (start > count - 1)
    {
    return;
    }
    if (start == 0)
    {
    indexs = new Array (array.length);
    }
    for (indexs[start] = ind; indexs[start] < array[start]["child"].length; indexs[start]++)
    {
    recursionSub (list, count, array, 0, start, indexs);
    if (start == count - 1)
    {
    var temp = new Array (count);
    for ( var i = count - 1; i >= 0; i--)
    {
    temp[start - i] = array[start - i]["child"][indexs[start - i]]["name"];
    }
    list.push (temp);
    }
    }
    }
    
    var list = [];
    recursionSub (list, array.length, array, 0, -1);
    console.log (list)
    console.info (list.length);
</script>

追问

不好意思,来晚了。刚刚测试一下,是可以的,但是感觉并不完整。假如child1没有name,那就没有输出了,假如child2里也没有name,也没有输出了。

追答

那你就先过滤空的对象

温馨提示:答案为网友推荐,仅供参考
相似回答