这篇文章主要介绍了JS笛卡尔积算法与多重数组笛卡尔积实现方法,结合实例形式分析了javascript根据对象或数组生成笛卡尔积的相关操作技巧,需要的朋友可以参考下

本文实例讲述了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实现多重数组笛卡尔积

例子:

(function() {

dwn = function(a) {

document.writeln(a + "
")

};

//笛卡尔积

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] + ")");

}

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

java 笛卡尔积 数组_在JS中笛卡尔积算法与多重数组笛卡尔积(详细教程)相关推荐

  1. php document.write,在JS中有关document.write()的用法(详细教程)

    这篇文章主要介绍了JS 中document.write()的用法和清空的原因浅析,需要的朋友可以参考下 可能很多朋友都遇到过这样的情况,那就是使用document.write()函数向网页中写内容的时 ...

  2. ibatis查询结果返回数组_在ibatis中传递和返回自定义数组对象,在java中传递和返回oracle...

    您必须从TypeHandler的自定义实例开始.我们更喜欢实现更简单的TypeHandlerCallback,但在这种情况下,我们需要访问底层的Connection. public class Arr ...

  3. java三目运算符嵌套_替代JS中的嵌套三元运算符

    您的替代方案基本上是: 你不想做 那个 if / else A switch 与 if / else 合并 我试图提出一个合理的查找映射选项,但它很快就变得不合理了 . 我会去#1,它不是那么大: i ...

  4. javascript字典中添加数组_在javascript中合并两个字典数组

    您可以使用 Array#map方法生成新数组(假设两个数组的顺序相同). var lat = [{key:"2017-09-20T11:51:32.000Z", value:50. ...

  5. java数组 js数组的长度_js中split()方法得到的数组长度问题

    定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separator,howmany) 参数 描述 separator 必需.字符串或正则 ...

  6. js数组获取index_通过事例重温一下 JS 中 常见的15 种数组操作(备忘清单),收藏...

    数组是 JS 中广泛使用的数据结构.数组对象提供了大量有用的方法,如array. forEach().array.map()等来操作数组. 在实战中,我经常对数组可能的操作和相应采用哪个更好的方法不知 ...

  7. js中的字符串方法与数组方法总结

    js中的字符串方法与数组方法总结 1.字符串方法 2.数组方法

  8. JS中根据指定值删除数组中的元素

    JS中根据指定值删除数组中的元素 原生js 如果想删除数组,有一个函数 splice() ~~ 删除元素,并向数组添加新元素. splice是根据数组内的下标 也就是索引来 删除元素的比如: var ...

  9. JS中定义一个二维数组

    JS中定义一个二维数组 方法一 var _TheArray = [["0-1","0-2"],["1-1","1-2"] ...

最新文章

  1. oracle sql 全是子查询查询速度太慢如何优化_如果面试官问你如何优化mysql分页查询,请把这篇文章甩给他!...
  2. pythontkinter控件单选框怎么判断是否被选中_Python GUI编程(Tkinter)Radiobutton单选框控件...
  3. 大漠插件 win10 绑定
  4. java链接mysql出问题_java连接MySQL出现问题
  5. codeforces 935E Fafa and Ancient Mathematics 语法树、动态规划
  6. python3生成随机数_python3实现随机数
  7. 手机Web 开发中图片img 如何等比例缩放
  8. 【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测
  9. 安装西门子博图一直重启_安装西门子提示重启,重启后,继续提示重启,无限循环,着急解决谢谢...
  10. 计算机系新春祝福语,春节的祝福语
  11. GoLang之什么是workstealing(5)
  12. 3种好用的可视化图表工具分享,快进来看!
  13. 联想集团Q1:非PC业务增势喜人,共同打造第二增长极
  14. Kaggle泰坦尼克号船难--逻辑回归预测生存率
  15. MapGuide的系统架构
  16. 测试两个主机之间的连通性_网络连通性测试工具—PING
  17. 这样的测试简历,面试官都喜欢
  18. C++ | 动态分配内存 new和malloc的区别
  19. fm算法详解_FM算法原理分析与实践
  20. video-player的使用

热门文章

  1. html经典网页,经典网页设计:20个与众不同的国外HTML5网站_html/css_WEB-ITnose
  2. linux网页制作教程,linux:.htaccess文件使用教程
  3. 西瓜书南瓜书第五章随记
  4. ASP.NET多文件批量打包下载
  5. 企业如何处理网上百度知道的负面信息?
  6. 十代服务器芯片组,【十代处理器主板芯片组个人整理汇总一览】包含总结和分析...
  7. kotlin Unresolved reference报错解决记录
  8. Matlab/simulink MIL自动化测试工具使用说明
  9. (找规律)23,41,18,64,? 问号处填什么?
  10. 求教合泰平台RAM溢出问题