packagecn.go4mi.util;public classTurns {//测试main方法
public static voidmain(String[] args) {
String [] a={"a","b","c"};
String [] b={"d","e"};
String [] c={"f","j"};
String [] d={"h","i"};
String[] add= newTurns().turns(a, b,c,d);for(String string : add) {
System.out.println(string);
}
}/*** 两两遍历
*@paramarray1
*@paramarray2
*@return
*/
public staticString[] doubleTurns(String [] array1,String[] array2){
String [] target=new String[array1.length*array2.length];for (int i = 0,a1=0,a2=0; i
target[i]=array1[a1]+","+array2[a2];
a2++;if(a2==array2.length){
a2=0;
a1++;
}
}returntarget;
}/*** 遍历组合
*@paramarrays
*@return
*/
public staticString[] turns(String[] ...arrays){if(arrays.length==1){return arrays[0];
}if(arrays.length==0){return null;
}//获得总结果数
int count=0;for (int i = 0; i < arrays.length; i++) {
count*=arrays[i].length;
}
String target[]=newString[count];//两两遍历
for (int i = 0; i < arrays.length; i++) {if(i==0){
target=doubleTurns(arrays[0],arrays[1]);
i++;
}else{
target=doubleTurns(target,arrays[i]);
}
}returntarget;
}
}
var s1 = ["a", "b", "c"];
var s2 = ["d", "e", "f"];
var s3 = ["x", "y", "z"];
var s4 = ["x1", "y2", "z3"];
var temp = [s1, s2 ,s3,s4];
function recursionSub(list, count, array, ind, start, indexs) {
start++;
if (start > count - 1) {
return null;
}
if (start == 0) {
indexs = [100];
}
for (indexs[start] = 0; indexs[start] < array[start].length; indexs[start]++) {
recursionSub(list, count, array, 0, start, indexs);
if (start == count - 1) {
var temp = [];
for (var i = count - 1; i >= 0; i--) {
temp[start - i] = array[start - i][indexs[start - i]];
}
list.push(temp);
}
}
return list;
}
var result = [];
recursionSub(result, temp.length, temp, 0, -1, []);
for (var i = 0; i < result.length; i++) {
console.log(result[i].join(','));
}