js两个数组排列组合
vara=["A","B"],b=["1","2"];//要求,排列组合结果为:A1,A2,A12,B1,B2,B12,AB1,AB2,AB12//两个数组还可以增加元素...
var a = ["A","B"], b = ["1","2"];
//要求,排列组合结果为:A1,A2,A12,B1,B2,B12,AB1,AB2,AB12
//两个数组还可以增加元素,以此类推
这种排列组合,要怎么写啊?求高人指教!!! 展开
//要求,排列组合结果为:A1,A2,A12,B1,B2,B12,AB1,AB2,AB12
//两个数组还可以增加元素,以此类推
这种排列组合,要怎么写啊?求高人指教!!! 展开
展开全部
<html>
<head>
<title>js两个数组排列组合</title>
<script type="text/javascript">
var a = ["A","B","C"];
var b = ["1", "2","3"];
window.onload = function () {
var a1 = new objPL(a);//计算数组a的排列组合
var b1 = new objPL(b);//计算数组b的排列组合
var str = "";
var n = 0;
//a1和b1的排列组合个数就是两者相乘(双层循环)
for (var i = 0; i < a1.length; i++) {
for (var j = 0; j < b1.length; j++) {
str += a1[i] + b1[j] + " ";
n++;
}
str += "<br/>";
}
document.write("共" + n + "个<br/>");
document.write(str);
}
//取数组的排列组合
function objPL(arr) {
this.a = arr;
this.r = [];
this.n = 0;
//从M个数里面取N个(递归)
this.mGetN = function (curIndex, num, curSelect) {
if (num == 0) {
this.r[this.n++] = curSelect; return;
}
if (this.a.length - curIndex < num) return;
this.mGetN(curIndex + 1, num - 1, curSelect + this.a[curIndex]);
this.mGetN(curIndex + 1, num, curSelect);
}
for (var i = 1; i <= this.a.length; i++) {
this.mGetN(0, i, "");
}
return this.r;
}
</script>
</head>
<body></body>
</html>
["A","B","C"]与["1","2","3"]组合的结果:
展开全部
var aArr = ['a', 'b', 'c'];
var bArr = ['大', '小'];
var cArr = ['西瓜', '冬瓜', '葡萄'];
var dArr = [{name:'hello'},{name:'look'}];
// 装载所有需要组合的数组
var totalArr = [aArr, bArr, cArr,dArr];
// 最终得到的所有的元素组合数组
var targetList = [];
// 所有的数组组合放在一起计算
function countList(allArr) {
if (allArr && allArr.length > 0) {
if (allArr.length > 1) {
var iArr = allArr[0];
var jArr = allArr[1];
var newArr = twoArrComp(iArr, jArr);
var leftArr = [];
for(var m = 0;m<allArr.length;m++){
if(m>1){
leftArr.push(allArr[m])
}
}
leftArr.unshift(newArr);
if(leftArr.length>1){
countList(leftArr);
}else{
targetList = leftArr;
}
} else {
targetList = allArr[0];
}
}
}
countList(totalArr);
console.log(targetList);
// 数组两两组合
var _resultArr = [];
function twoArrComp(aArr, bArr) {
var listArr = [];
if (aArr && aArr.length > 0 && bArr && bArr.length > 0) {
aArr.forEach(function (aItem) {
bArr.forEach(function (bItem) {
_resultArr = [];
splitArrToOneDir(aItem);
splitArrToOneDir(bItem);
listArr.push(_resultArr)
})
})
}
return listArr;
}
// 函数递归,把多维数组拆成一维平面数组
function splitArrToOneDir(item){
if(isArray(item) == true){
item.forEach(function(childItem){
if(isArray(childItem) == true){
splitArrToOneDir(childItem)
}else{
_resultArr.push(childItem);
}
})
}else{
_resultArr.push(item);
}
}
// 判断是否是Array数组
function isArray(item) {
var _isArray = false;
if (Array.isArray) {
_isArray = Array.isArray(item);
} else {
_isArray = Object.prototype.toString().call(item) === "[object Array]"
}
return _isArray;
}
var bArr = ['大', '小'];
var cArr = ['西瓜', '冬瓜', '葡萄'];
var dArr = [{name:'hello'},{name:'look'}];
// 装载所有需要组合的数组
var totalArr = [aArr, bArr, cArr,dArr];
// 最终得到的所有的元素组合数组
var targetList = [];
// 所有的数组组合放在一起计算
function countList(allArr) {
if (allArr && allArr.length > 0) {
if (allArr.length > 1) {
var iArr = allArr[0];
var jArr = allArr[1];
var newArr = twoArrComp(iArr, jArr);
var leftArr = [];
for(var m = 0;m<allArr.length;m++){
if(m>1){
leftArr.push(allArr[m])
}
}
leftArr.unshift(newArr);
if(leftArr.length>1){
countList(leftArr);
}else{
targetList = leftArr;
}
} else {
targetList = allArr[0];
}
}
}
countList(totalArr);
console.log(targetList);
// 数组两两组合
var _resultArr = [];
function twoArrComp(aArr, bArr) {
var listArr = [];
if (aArr && aArr.length > 0 && bArr && bArr.length > 0) {
aArr.forEach(function (aItem) {
bArr.forEach(function (bItem) {
_resultArr = [];
splitArrToOneDir(aItem);
splitArrToOneDir(bItem);
listArr.push(_resultArr)
})
})
}
return listArr;
}
// 函数递归,把多维数组拆成一维平面数组
function splitArrToOneDir(item){
if(isArray(item) == true){
item.forEach(function(childItem){
if(isArray(childItem) == true){
splitArrToOneDir(childItem)
}else{
_resultArr.push(childItem);
}
})
}else{
_resultArr.push(item);
}
}
// 判断是否是Array数组
function isArray(item) {
var _isArray = false;
if (Array.isArray) {
_isArray = Array.isArray(item);
} else {
_isArray = Object.prototype.toString().call(item) === "[object Array]"
}
return _isArray;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var c=new Array();
var k=0,as="",bs="";
//A1,A2...... 赋值给数组c
for(var i=0;i<a.length;i++)
{
for(var j=0;j<b.length;j++)
{
c[k]=a[i]+b[j];
k++;
}
}
//求a中字符和
for(var m=0;m<a.length;m++)
{
as+=a[m];
}
//求b中字符和
for(var n=0;n<b.length;n++)
{
bs+=b[n];
}
// AB1,AB2赋值给数组c
for(n=0;n<b.length;n++)
{
c[k]=as+b[n];
k++;
}
//A12,B12赋值给数组c
for(m=0;m<a.length;m++)
{
c[k]=a[m]+bs;
k++;
}
c[k]=as+bs;//将AB12赋值给数组c
for(k=0;k<c.length;k++)
alert(c[k]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询