比如有n个数组,数组的数量是不固定的,这个是前提。具体的效果,我举个例子:
假设有三个数组:
var aa=[1,2];
var bb = [7];
var cc = [4,8];
要获取的数据是这样的:
[1, 7, 4]
[1, 7, 8]
[2, 7, 4]
[2, 7, 8]
就是获取数据库的笛卡尔积形式的数据.
假设有三个数组:
var aa=[1,2];
var bb = [7];
var cc = [4,8];
要获取的数据是这样的:
[1, 7, 4]
[1, 7, 8]
[2, 7, 4]
[2, 7, 8]
就是获取数据库的笛卡尔积形式的数据.
解决方案 »
- JS如何模拟鼠标点击X,Y坐标
- 关于效率,7-8个jsp页面有大量相同的ext代码,是写入一个共用的js中还是每个页面重复一遍
- javascript数组访问下标
- 如何锁定窗口?
- 之前一个腾讯同事写的js 加密...还有另外一段...求解eval...最好说下原理
- 一个关于在客户端获取checkbox值得问题,请大家多多帮忙,在线等!
- 层有src或则href,location的参数吗??
- JS高手请指点:一段JS程序在IE5下报错。。。
- 如何做到,在一个窗口中点击一张表中的一行,关闭窗口,在另一个窗口的table添加。
- vue框架+bootstrap-table框架+jq一起用时出现问题
- 感觉有点困难的JS实现问题
- 响应onblur检验表单后alert("xxx")为什么在360浏览器下关不掉提示窗?
for(var i=0;i<aa.length;i++)
{
for(var j=0;j<bb.length;j++)
{
for(var k=0;k<cc.length;k++)
{
var aresult=[aa[i],bb[j],cc[k]];
result.push(aresult);
}
}
}
这样不就行了,很简单的啊
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数组就是所需结果
toResult(0);//函数执行后result数组就是所需结果
alert(result); //结果是:,1,1,1,1,1,1,2,1,1,1,3,1,1,2,1,1,1,2,2,1,1,2,3,1,1,3,1,1,1,3,2,1,1,3,3,1,2,1,1,1,2,1,2,1,2,1,3,1,2,2,1,1,2,2,2,1,2,2,3,1,2,3,1,1,2,3,2,1,2,3,3,1,3,1,1,1,3,1,2,1,3,1,3,1,3,2,1,1,3,2,2,1,3,2,3,1,3,3,1,1,3,3,2,1,3,3,3,2,1,1,1,2,1,1,2,2,1,1,3,2,1,2,1,2,1,2,2,2,1,2,3,2,1,3,1,2,1,3,2,2,1,3,3,2,2,1,1,2,2,1,2,2,2,1,3,2,2,2,1,2,2,2,2,2,2,2,3,2,2,3,1,2,2,3,2,2,2,3,3,2,3,1,1,2,3,1,2,2,3,1,3,2,3,2,1,2,3,2,2,2,3,2,3,2,3,3,1,2,3,3,2,2,3,3,3,3,1,1,1,3,1,1,2,3,1,1,3,3,1,2,1,3,1,2,2,3,1,2,3,3,1,3,1,3,1,3,2,3,1,3,3,3,2,1,1,3,2,1,2,3,2,1,3,3,2,2,1,3,2,2,2,3,2,2,3,3,2,3,1,3,2,3,2,3,2,3,3,3,3,1,1,3,3,1,2,3,3,1,3,3,3,2,1,3,3,2,2,3,3,2,3,3,3,3,1,3,3,3,2,3,3,3,3
结果是[[1,1,1,1],[1,1,1,2],[1,1,1,3],......],总共81个。
alert时会调用对象的toString方法再输出,而数组的toString方法就是在成员间用逗号分隔连接为字符串,所以alert就是这个结果。但实际的情况是一个二维数组。
亏你还有星星,这都不知道么?