js两个数组排列组合
发布网友
发布时间:2022-04-20 08:02
我来回答
共3个回答
热心网友
时间:2022-05-15 07:02
<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"]组合的结果:
热心网友
时间:2022-05-15 08:20
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;
}
热心网友
时间:2022-05-15 09:54
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]);
js两个数组排列组合
js两个数组排列组合 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; ...
js实现的数据算法?
二维数组数据排列组合 JavaScript <button type="button"onclick="myarr=[[0,1,2], [0,1,2], [0,1,2]];mystr='';for (i = 0; i < myarr.length; i++) { for (j = 0; j < 3; j++){ for (k = 0; k < 3; k++){ mystr=mystr+myarr[0][i]+myarr[i][j...
js jq M个数组选N个进行排列组合,怎么写?
这个主要考量的是计算的问题,主要就是理解排列和组合的公式。在这里,我们只需要计算元素的个数,就可以使用公式获取到排列组合数,但如果要获取排列组合的具体集合,就需要遍历,也就是我们经常使用的for循环,通过循环,每个数组去一个元素。就构成了组合。
web前端大厂10道经典面试题汇总(含答案详解)
3、实现超出整数存储范围的两个大正整数相加。针对大数字运算,使用数组存储位数不同的大整数,通过逆序相加并处理进位,得到结果后反转数组返回。4、任意二维数组的全排列组合。此题采用递归方式,将多项数组逐步相乘,实现全排列组合。简单明了,将复杂问题简化。5、公司根据产品售价决定利润最大化。每个...
高中排列组合 题目如下,两个正方形和一个三角形进行排列 一共有1/2A...
3A+2A=5A.DKGLZ;RKAYJF=35532A FGHJDSKJHKKDFGHJKJSHDJFLKGDLHSKHHGIFDGOGHJDHGSGFIODUGL;KHF=32145669784248956245863256A=HSJDLFJGHKSK.33333333333.333333554898457545乘CFJFHGKLHFDKJF11513633.FDGHDFJD256752A
数组是大学知识吗?
数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合 产生来源 在C语言中, 数组 属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造...
软考程序员要看哪些书?
计算机中二进制数的运算方法 逻辑代数的基本运算和逻辑表达式的化简 1.4 数学应用 常用数值计算(矩阵、方程的近似求解、插值)排列组合、应用统计(数据的统计分析)1.5 常用数据结构 数组(表态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树)、图的...
计算机为什么会如此强大
16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。 如某种计算机的指令为1011011000000000,它表示让计算机进行一次加法操作;而指令1011010100000000则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7...
如何确定自己是否适合做程序员?
syuanlei1987 ·努力成为无所不知的最佳答题者 专注于 一份工作是否适合你至少有三个标准:你擅长什么,你喜欢什么,什么对你最有价值(也能赚钱)。从程序员职业的角度来看,有很多标准来判断一个人是否适合做程序员。看看你是否符合以下几个核心标准:1. 理解能力或自学能力 如果你在成长过程中一直认为...
js两个数组排列组合
js两个数组排列组合 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; ...