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 相关文章推荐
让IE8支持DOM 2(不用框架!)
Dec 31 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
js实现遮罩层弹出框的方法
Jan 15 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
谈谈对vue响应式数据更新的误解
Aug 01 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
Vue获取页面元素的相对位置的方法示例
Feb 05 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
May 12 Javascript
JS前端可扩展的低代码UI框架Sunmao使用详解
Jul 23 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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
yii添删改查实例
2015/11/16 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
js 内存释放问题
2010/04/25 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
关于Python的一些学习总结
2018/05/25 Python
Python装饰器用法实例分析
2019/01/14 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
高二历史教学反思
2014/01/25 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
公司授权委托书样本
2014/09/15 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
毕业典礼致辞
2015/07/29 职场文书
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android