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>

  

原文地址:https://www.cnblogs.com/hapday/p/10549806.html

时间: 2024-10-13 16:32:21

JavaScript 递归法排列组合二维数组的相关文章

JavaScript 递归法排列组合二维数组2

<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-乐乐' ]

最小表示法,以及二维数组的比较方法

雪花雪花雪花 用到的是最小表示法 有N片雪花,每片雪花由六个角组成,每个角都有长度. 第i片雪花六个角的长度从某个角开始顺时针依次记为ai,1,ai,2,-,ai,6. 因为雪花的形状是封闭的环形,所以从任何一个角开始顺时针或逆时针往后记录长度,得到的六元组都代表形状相同的雪花. 例如ai,1,ai,2,-,ai,6和ai,2,ai,3,-,ai,6,ai,1就是形状相同的雪花. ai,1,ai,2,-,ai,6和ai,6,ai,5,-,ai,1也是形状相同的雪花. 我们称两片雪花形状相同,当且

JavaScript二维数组矩形倒置(只针对矩形)

如图 想要对这个矩形排列的二维数组进行倒置 达到 9 8 2 0 9 4 2 0 6 1 -1 8 的效果, 思路:对矩形进行自上而下的遍历,即9 8 2 0 9 4 2 0 6 1 -1 8 遍历思路:arr.length=3;arr[0].leng=4; 以arr.length=3;为主for循环,进行遍历 代码 1.   var arr1=[[2,4,6,8],[8,9,0,-1],[9,0,2,1]];//数组  2.     for(var i=0;i<arr1.length;i++)

jQuery写省级联动列表,创造二维数组,以及如何存/调用二维数组中的数据

jQuery写省级联动列表,创造二维数组来存放数据,然后通过each来遍历调用,通过creatTxtNode创建文本节点,通过createElement创建标签option,在通过append将文本写入option,再通过appendTo将文本追加到id为city的市级列表中 代码如下: jquery部分: 1 <script src="js/jquery-1.8.3.js" type="text/javascript" charset="utf-8

JavaScript 二维数组排列组合2

<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-乐乐' ]

C#/JS 获取二维数组组合

C#获取二维数组组合 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace HF.SHOP.WebSite { public partial class Demo : System.Web.UI.Page { List

JavaScript - 一维数组、二维数组基础

<html> <head> <head> <body> <script language="javascript"> // 数组 var arr = ["wjp", 520, 'wcc', 13.14] ; for(var i=0; i<arr.length; i++){ alert(arr[i]); } // 数组为空undefined var arr2 = ["wjp",,51

Python学习笔记 之 递归、二维数组顺时针旋转90&#176;、正则表达式

递归.二维数组顺时针旋转90°.正则表达式 1.   递归算法是一种直接或间接调用自身算法的过程. 特点: 递归就是在过程或函数里调用自身 明确的递归结束条件,即递归出口 简洁,但是不提倡 递归次数多容易造成栈溢出 要求: 每次调用递归规模上有所减小 前一次为后一次做准备 规模较小时必须直接给出解答而不再进行递归调用 例子:递归实现二分法 1 def searchMyData(mydate,a1): 2 mid = int(len(mydate)/2) 3 if mid >= 1: 4 if m

6.javaScript中的二维数组

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script type="text/javascript"> 7 //声明一维数组 8 var myarr = new Array(); 9 for (var i = 0; i < 3; i++) {