JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
作者:杨江天涯 发布时间:2024-05-03 15:32:07
标签:JS,笛卡尔积,算法
本文实例讲述了JS笛卡尔积算法与多重数组笛卡尔积实现方法。分享给大家供大家参考,具体如下:
js 笛卡尔积算法的实现代码,据对象或者数组生成笛卡尔积,并介绍了一个javascript多重数组笛卡尔积的例子,以及java实现笛卡尔积的算法与实例代码。
一、javascript笛卡尔积算法代码
例子,根据对象或者数组生成笛卡尔积。
//笛卡儿积组合
function descartes(list) {
//parent上一级索引;count指针计数
var point = {};
var result = [];
var pIndex = null;
var tempCount = 0;
var temp = [];
//根据参数列生成指针对象
for (var index in list) {
if (typeof list[index] == 'object') {
point[index] = {
'parent': pIndex,
'count': 0
}
pIndex = index;
}
}
//单维度数据结构直接返回
if (pIndex == null) {
return list;
}
//动态生成笛卡尔积
while (true) {
for (var index in list) {
tempCount = point[index]['count'];
temp.push(list[index][tempCount]);
}
//压入结果数组
result.push(temp);
temp = [];
//检查指针最大值问题
while (true) {
if (point[index]['count'] + 1 >= list[index].length) {
point[index]['count'] = 0;
pIndex = point[index]['parent'];
if (pIndex == null) {
return result;
}
//赋值parent进行再次检查
index = pIndex;
} else {
point[index]['count']++;
break;
}
}
}
}
调用方法:
var result = descartes({'aa':['a','b','c','d'],'bb':['$','%','^','&']});
alert(result);//result就是笛卡尔积
二、js实现多重数组笛卡尔积
例子:
<script>
(function() {
dwn = function(a) {
document.writeln(a + "<br />")
};
//笛卡尔积
var Cartesian = function(a, b) {
var ret = [];
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
ret.push(ft(a[i], b[j]));
}
}
return ret;
}
var ft = function(a, b) {
if (! (a instanceof Array)) a = [a];
var ret = Array.call(null, a);
ret.push(b);
return ret;
}
//多个一起做笛卡尔积
multiCartesian = function(data) {
var len = data.length;
if (len == 0) return [];
else if (len == 1) return data[0];
else {
var r = data[0];
for (var i = 1; i < len; i++) {
r = Cartesian(r, data[i]);
}
return r;
}
}
})();
var data = [['a', 'b', 'c'], [1, 2, 3, 4], ['A', 'B'], ['#', '@', '+'], ['Mary', 'Terry', 'KYO']];
var r = multiCartesian(data);
for (var i = 0; i < r.length; i++) {
dwn("(" + r[i] + ")");
}
</script>
希望本文所述对大家JavaScript程序设计有所帮助。
来源:http://blog.csdn.net/a473554142/article/details/48970225


猜你喜欢
- 本文实例讲述了Python面向对象编程之继承与多态。分享给大家供大家参考,具体如下:Python 类的继承在OOP(Object Orien
- 在我转到wordpress之后第一个考虑的是它的数据库备份恢复问题,因为写bloger都知道,自己的blog记录的都是自己需要的宝贵的资料和
- 本文实例讲述了php获取给定日期相差天数的方法。分享给大家供大家参考,具体如下:方法一:<?phpfunction count_day
- 各位大家好!很荣幸能在这里和大家聊聊!(*^__^*) 嘻嘻……此处省略488字,切入正题。关于网页设计这个行业,在中国来讲这个行业并不成熟
- 一、Pycharm中安装Django此教程默认你已安装并配置了Python 3.7.6)1.File—>Settings二、搭建Dja
- 代码如下: Function NumberSplit(num) Dim i,length length=Len(num) For i=1 T
- 1、简介pyqt 列表 单元格中 不仅可以添加数据,还可以添加控件。我们尝试添加下拉列表、一个按钮试试。setItem:将文本放到单元格中s
- 一、安装1、安装easy_install工具wget http://peak.telecommunity.com/dist/ez_setup
- 如下所示:file = open('./abc.csv')csv.reader(file, delimiter=',
- 一、随机数种子为什么要提出随机数种子呢?咱们前面提到过了,随机数均是模拟出来的, 想要模拟的比较真实,就需要变换种子函数内的数值,一般以时间
- 开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍。Anaconda是Python的一个发行版本
- 八卦是种优良品质,特别是用在技术上时。来看几个Reset CSS的八卦问题吧:你知道世界上第一份reset.css在哪么?*&nb
- (一)ts文件下载网页文件下载其实都可以通过requests.get以文件流的形式获取,并以字节的形式写入本地文件即可。代码如下:impor
- 按照下面一步一步来,安 * p就是这么简单。脚本之家下载渗透测试软件Burp Suite Professionalhttps://www.jb
- 何时使用单体 RESTful 服务对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,而单体服务具有架构简单,部署简单,开发成本
- 1 简介在使用Git管理自己的代码版本时,由于编译生成的中间文件,Git使用SHA-1算法来对文件进行加密,进而得出来一个40位的十六进制加
- 守护进程模式使用python开发后台服务程序的时候,每次修改代码之后都需要重启服务才能生效比较麻烦。看了一下Python开源的Web框架(D
- 分区表的概念 分区致力于解决支持极大表和索引的关键问题。它采用他们分解成较小和易于管理的称为分区的片(piece)的方法。一旦分区被定义,S
- 引言在前面的文章当中我们讨论的是 python3 当中早期的内嵌数据结构字典的实现,在本篇文章当中主要介绍在后续对于字典的内存优化。字典优化
- 本文实例讲述了Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作。分享给大家供大家参考,具体如下:Thinkphp5.0