JS笛卡尔积算法与多重数组笛卡尔积实现方法示例


Posted in Javascript onDecember 01, 2017

本文实例讲述了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>

为加深对笛卡尔积的理解,这里推荐一篇java笛卡尔积的方法教程:https://3water.com/article/129585.htm,大家可以参考下。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
jquery解决图片路径不存在执行替换路径
Feb 06 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
Vue制作Todo List网页
Apr 26 Javascript
JS实现按钮控制计时开始和停止功能
Jul 27 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
bootstrap table实现iview固定列的效果实例代码详解
Sep 30 Javascript
利用JS测试目标网站的打开响应速度
Dec 01 #Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 #Javascript
javascript按顺序加载运行js方法
Dec 01 #Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
Dec 01 #Javascript
javascript Function函数理解与实战
Dec 01 #Javascript
React Native react-navigation 导航使用详解
Dec 01 #Javascript
分析JS单线程异步io回调的特性
Dec 01 #Javascript
You might like
Oracle 常见问题解答
2006/10/09 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
PHP安全上传图片的方法
2015/03/21 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
Javascript调试工具(下载)
2007/01/09 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
常用jQuery代码分享
2015/07/14 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
JS实现手风琴特效
2020/11/08 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
浅析Python的Django框架中的Memcached
2015/07/23 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python数据分析:关键字提取方式
2020/02/24 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
python安装sklearn模块的方法详解
2020/11/28 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
升职演讲稿范文
2014/05/23 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
让子弹飞观后感
2015/06/11 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书