日期:2014-05-16 浏览次数:20442 次
<script>
var aa=[1,2];
var bb = [7];
var cc = [4,8];
var dd = [1,2,3];
var all=[aa,bb,cc,dd]; //有多少数组都集起来
var i=all.length;
function arrl(arr,k,str){
if(k>=i){
return false;
}else{
var a=arr[k];
if(k==i-1){
for(var l=0;l<a.length;l++){
document.write (str+a[l]+"]");
}
}else{
for(var l=0;l<a.length;l++){
if(k==0){str="["};
str+=a[l]+",";
var b=k+1;
arrl(arr,b,str);
}
}
}
}
arrl(all,0,"");
</script>
------解决方案--------------------
呃 没注意数组数量不定:
可以使用递归
var aa=[1,2,3],bb=[1,2,3],cc=[1,2,3],dd=[1,2,3];
var zz=[aa,bb,cc,dd];//此处数组个数任意
var result=new Array();//结果保存到这个数组
function toResult(arrIndex,aresult)
{
if(arrIndex>=zz.length) {result.push(aresult);return;};
var aArr=zz[arrIndex];
if(!aresult) aresult=new Array();
for(var i=0;i<aArr.length;i++)
{
var theResult=aresult.slice(0,aresult.length);
theResult.push(aArr[i]);
toResult(arrIndex+1,theResult);
}
}
toResult(0);//函数执行后result数组就是所需结果