首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

用javascript或jquery怎么获取三个数组的笛卡尔积有关问题,自己想了两天,实在无能为力了,算法过于复杂

2012-09-17 
用javascript或jquery如何获取三个数组的笛卡尔积问题,自己想了两天,实在无能为力了,算法过于复杂。比如有n

用javascript或jquery如何获取三个数组的笛卡尔积问题,自己想了两天,实在无能为力了,算法过于复杂。
比如有n个数组,数组的数量是不固定的,这个是前提。具体的效果,我举个例子:
假设有三个数组:
var aa=[1,2];
var bb = [7];
var cc = [4,8];
要获取的数据是这样的:
[1, 7, 4]
[1, 7, 8]
[2, 7, 4]
[2, 7, 8]
就是获取数据库的笛卡尔积形式的数据.

[解决办法]

JScript code
<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数组就是所需结果

热点排行