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 相关文章推荐
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
jquery nth-child()选择器的简单应用
Jul 10 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
Mar 03 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
发布Angular应用至生产环境的方法
Dec 10 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
vue实现登录功能
2020/12/31 Vue.js
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
python如何实现图片压缩
2020/09/11 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
JPA的特点
2014/10/25 面试题
自主招生自荐信格式
2013/12/03 职场文书
开工典礼策划方案
2014/05/23 职场文书
个人委托书
2014/07/31 职场文书
投标授权委托书范文
2014/08/02 职场文书
助学贷款贫困证明
2014/09/23 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
2014年团支书工作总结
2014/11/14 职场文书
员工升职自荐信
2015/03/27 职场文书