尝试使用javascript获取所有可能的组合
我现在被困在这个问题上尝试使用javascript获取所有可能的组合,javascript,combinations,Javascript,Combinations,我现在被困在这个问题上 var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']]; for(var a = 0; a < arr4[1].length; a++){ if(a != 0){ document.write('<br /><br />'); } for(var b = 0; b < arr4[0].length; b++){ for(var
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
假设有一个数组arr4(长度不是固定的)。
我需要找到它元素的所有组合
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
预期产出为:
4-16D-5d
4-16D-5e
4A-16D-5d
4A-16D-5e
4B-16D-5d
4B-16D-5e
4-15D-5d
4-15D-5e
4A-15D-5d
4A-15D-5e
4B-15D-5d
4B-15D-5e
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
我尝试的是:
arr4=[['4','4A','4B'],['16D','15D'],['5d','5e']]; //may contains more elements
alert("arr4 "+arr4);
for(var k=0;k<arr4.length;k++){
alert("k "+k);
arr_v=arr4[k]
alert("arrv"+arr_v);
alert ("arrv lengt"+arr_v.length);
for(var z=0;z<arr_v.length;z++){
m=1;
while(m<arr4.length){
var test=arr4[m];
for(var n=0;n<test.length;n++)
alert(arr_v[z]+"<TEST>"+test[n]);
}
m++;
}
}
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
但是
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
上述方法可行,但以下方法无效:
arr4=[['4','4A','4B'],['16D','15D'],['5d','5e']];
alert(product(arr4);
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
任何人请提出一个解决方案
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
编辑:解决方案
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
jsidle对于感兴趣的人可以计算每个子数组的笛卡尔积。看
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}
我试过了,因为它超出了每个数组的长度,所以无论每个列表中有多少个元素,它都应该可以工作,并返回每个产品的列表。感谢您的格式设置,Kolink非常感谢您的解决方案它可以按预期工作。但这就是我被困的地方。arr4不是固定阵列。它被随机生成的数据所包围。在不同的首字母上,它可能如下['4'、'4A'、'4B']、['16D'、'15D']、['5d'、'5e']、['6d'、'8d']、['9g'、'9h'、['9i']];或['4'、'4A'、'4B']、['16D'、'15D'])。如果您为arr4[0]写“a”,为arr4[1]写“b”,为arr4[2]写“c”就可以了。但如果您希望它们以特定的顺序写入,那么当它是一个动态填充数组时,您将如何知道您希望它们以什么顺序写入?这似乎可行,但原因是:arr4=['4'、'4A'、'4B']、['16D'、'15D']、['5d'、'5e'];alert(产品(arr4);不起作用,但发出警报(产品(['4'、'4A'、'4B']、['16D'、'15D']、['5d'、'5e']));有效。有什么建议吗?谢谢我假设它不需要数组,而是需要数组的“列表”。谢谢,我得到了答案!
var arr4 = [['4','4A','4B'],['16D','15D'],['5d','5e']];
for(var a = 0; a < arr4[1].length; a++){
if(a != 0){
document.write('<br /><br />');
}
for(var b = 0; b < arr4[0].length; b++){
for(var c = 0; c < arr4[2].length; c++){
document.write(arr4[0][b] + '-' + arr4[1][a] + '-' + arr4[2][c] + '<br />')
}
}
}