比如有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]
就是获取数据库的笛卡尔积形式的数据.
解决方案 »
- javascript <% %>问题
- 在div中各行数据后自动加上"X"(X为小图标)表示删除本行,求这种效果
- 当前日期和指定日期相差天数问题
- js简单实现多个div拖动效果
- Prototype内的正则表达式.....
- var nick = document.getElementById('nick').value取不到中文值!
- 如何动态的得到这些DIV高度之和呢,急 在线等!
- 导出excel表格,关闭excel文件,进程怎么没有结束?
- 急啊!!!哪位高手知道在网页中如何取得电脑的网卡MAC地址?
- 关闭窗口的问题?怎样才有确认和取消
- 感觉有点困难的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就是这个结果。但实际的情况是一个二维数组。
亏你还有星星,这都不知道么?