JavaScript 递归法排列组合二维数组
<html>
<head>
<title>二维数组排列组合</title>
</head>
<body>
<div id="showDiv"></div>
</body>
<script type="text/javascript">
var arrays = [
[
'1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐'
]
, [
'2-5-小明', '2-6-花花', '2-7-数数'
]
, [
'3-8-静静', '3-9-点点', '3-10-hapday', '3-11-欢欢', '3-12-yuchen'
]
];
// debugger;
/**
* 递归法排列组合二维数组
*/
function doExchange(doubleArrays){
var len=doubleArrays.length;
if (len >= 2) {
var len1 = doubleArrays[0].length;
var len2 = doubleArrays[1].length;
var newlen = len1 * len2;
var temp = new Array(newlen);
var rowIndex=0;
for(var index = 0; index < len1; index++){
for(var cursor = 0; cursor < len2; cursor++){
temp[rowIndex] = doubleArrays[0][index] + '#' + doubleArrays[1][cursor];
rowIndex++;
}
}
var newArray = new Array(len-1);
for (var index = 2; index < len; index++) {
newArray[index - 1] = doubleArrays[index];
}
newArray[0] = temp;
var result = doExchange(newArray);
console.log(result);
return result;
} else {
var result = doubleArrays[0];
console.log('只有一个内层数组:\n' + result + '\n');
console.log('===================================');
return result;
}
}
var ret = doExchange(arrays);
window.document.getElementById('showDiv').innerHTML += '共有 ' + ret.length + ' 种组合。<br /><br />';
for (var index = 0; index < ret.length; index++) {
var row = ret[index];
var rows = row.split('#');
// debugger;
for (var cursor = 0; cursor < rows.length; cursor++) {
window.document.getElementById('showDiv').innerHTML += rows[cursor] + ' ';
}
window.document.getElementById('showDiv').innerHTML += '<br />';
}
</script>
</html>