日期:2014-05-16 浏览次数:20369 次
<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数组就是所需结果