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 相关文章推荐
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 Javascript
Jquery 全选反选实例代码
Nov 19 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
Vue 过渡(动画)transition组件案例详解
Jan 22 Javascript
详解小程序rich-text对富文本支持方案
Nov 28 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 Javascript
p5.js绘制旋转的正方形
Oct 23 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
JavaScript组合设计模式--改进引入案例分析
May 23 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
Nov 12 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
PHP 字符串 小常识
2009/06/05 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
php jsonp单引号转义
2014/11/23 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python的一些用法分享
2012/10/07 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
python 对xml解析的示例
2021/02/27 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
女子职高个人自荐书
2014/02/01 职场文书
现场施工员岗位职责
2014/03/10 职场文书
法制宣传口号
2014/06/16 职场文书
博士生求职信
2014/07/06 职场文书
供用电专业求职信
2014/07/07 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
解除处分决定书
2015/06/25 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
对象析构函数__del__在Python中何时使用
2022/03/22 Python