首页 新闻 会员 周边 捐助

js 数组 递归

1
悬赏园豆:30 [已解决问题] 解决于 2011-10-20 13:59

现在有一个不确定长度的数组.

比如:

var temp=[

["Fu","Hai","Huan"],

["Wei","You"],

["Chong","Tong","Zhong"]

];

每一个数组的长计都不确定  ,

如何 遍历这个数组

得到如: FuWeiChong ,FuWeiTong

这样的数据

问题补充:

temp数组的长度不确定

里面的第一个数组的长度不确定

陌文隐的主页 陌文隐 | 初学一级 | 园豆:92
提问于:2011-10-20 11:19
< >
分享
最佳答案
0

JS:

function doExchange(doubleArrays){
var len=doubleArrays.length;
if(len>=2){
var len1=doubleArrays[0].length;
var len2=doubleArrays[1].length;
var newlen=len1*len2;
var temp=new Array(newlen);
var index=0;
for(var i=0;i<len1;i++){
for(var j=0;j<len2;j++){
temp[index]=doubleArrays[0][i]+doubleArrays[1][j];
index++;
}
}
var newArray=new Array(len-1);
if(len>2){
newArray[1]=doubleArrays[2];
}
newArray[0]=temp;
return doExchange(newArray);
}
else{
return doubleArrays[0];
}
}

//调用示例:
function test(){
var temparr=[
["Fu","Hai","Huan"],
["Wei","You"],
["Chong","Tong","Zhong"]
];
var ret = doExchange(temparr);
console.log("共有:" + ret.length + "种组合!");
for (var i = 0; i < ret.length; i++) {
console.log(ret[i]);
}
}

效果图:



收获园豆:30
artwl | 专家六级 |园豆:16736 | 2011-10-20 12:54

for (var ix = 0; ix < len - 2; ix++) {
//newArray[1] = doubleArrays[2]; //这里要改下
newArray[ix + 1] = doubleArrays[ix + 2];
}

这里改了就符合需求了,

陌文隐 | 园豆:92 (初学一级) | 2011-10-20 13:58
artwl | 园豆:16736 (专家六级) | 2011-10-20 13:59

@天行健 自强不息: 

修改后的:

function doExchange(doubleArrays){
var len=doubleArrays.length;
if(len>=2){
var len1=doubleArrays[0].length;
var len2=doubleArrays[1].length;
var newlen=len1*len2;
var temp=new Array(newlen);
var index=0;
for(var i=0;i<len1;i++){
for(var j=0;j<len2;j++){
temp[index]=doubleArrays[0][i]+
doubleArrays[1][j];
index++;
}
}
var newArray=new Array(len-1);
for(var i=2;i<len;i++){
newArray[i-1]= doubleArrays[i];
}
newArray[0]=temp;
return doExchange(newArray);
}
else{
return doubleArrays[0];
}
}
artwl | 园豆:16736 (专家六级) | 2011-10-20 14:00
其他回答(1)
0

这个js库是专门解决你这类问题的:http://sylvester.jcoglan.com/

水牛刀刀 | 园豆:6350 (大侠五级) | 2011-10-20 11:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册