如何用javascript实现笛卡尔乘积?

如何用javascript实现笛卡尔乘积?
2021年08月17日22:04:29 0 1238

如何用javascript实现笛卡尔乘积?

 

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积,又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 。

例子

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

 

一般的实现中,c语言,python,java实现的方式比较多,但是对于前端而言,也是有其实现意义的, 比如淘宝的sku商品订单组合的实现就需要笛卡尔乘积,根据商品的子类型和不同尺寸生成n种可能的组合 某些情况下用于寻找连续日期中残缺的数据,可以先笛卡尔积做一个排列组合,然后和目标表进行关联,查找哪些数据缺少了 MySQL的多表查询 生成棋牌坐标

等等,只有你想不到的,没有它实现不了的。接下来就来看看他的具体实现吧!

笛卡尔积的javascript实现

/*
 * @Author: Mr Jiang.Xu 
 * @Date: 2019-08-31 00:05:33 
 * @Last Modified by: Mr Jiang.Xu 
 * @Last Modified time: 2019-08-31 00:05:33 
 */
function cartesian(arr) {
 if (arr.length < 2) return arr[0] || [];
 return [].reduce.call(arr, function (col, set) {
 let res = [];
 col.forEach(c => {
 set.forEach(s => {
 let t = [].concat(Array.isArray(c) ? c : [c]);
 t.push(s);
 res.push(t);
 })
 });
 return res;
 });
}

由于实现方法很多,这里就不一一举例了,上述实现方式的时间复杂度为O(n^3),还不是最优,所以有更好的实现方法欢迎探索哦~

 

打赏 点赞(0)
weinxin
投诉&咨询
文章名+链接地址,发送到此微信:tourism52
CSS学习,菜鸟教程,css,学习,菜鸟,教程 菜鸟教程

CSS学习(2)--菜鸟教程

CSS学习(2)--菜鸟教程选择器id选择器只能用一次,样式表中用#名称来定义,class选择器可以使用多次HTML使用CSS内嵌样式表:写在<head>中的<s...
HTML,DOM,实例,HTML,DOM,实例,使用,JavaScript,访问, 菜鸟教程

HTML DOM 实例

HTML DOM 实例 使用JavaScript访问和操作的HTML DOM对象的例子。 Document 对象 使用 document.write() 输出文本 使用 docum...
ASP,编程,简介,ASP,编程,简介,经典,Active,Server, 菜鸟教程

ASP编程简介

ASP编程简介 经典 ASP - Active Server Pages(动态服务器页面) ASP ,全称 Active Server Pages(动态服务器页面),也被称为经典 ...
错误,信息,说明 菜鸟教程

错误信息说明

错误信息说明从 PHP 4.2.0 开始,PHP 将随文件信息数组一起返回一个对应的错误代码。该代码可以在文件上传时生成的文件数组中的 error 字段中被找到,也就是 $_FIL...
运算符 菜鸟教程

位运算符

位运算符位运算符允许对整型数中指定的位进行求值和操作。位运算符例子名称结果$a & $bAnd(按位与)将把$a和$b中都为 1 的位设为 1。$a | $bOr(按位同或...
参数,校验,优雅,实践 菜鸟教程

参数校验优雅实践

一  不厌其烦的 if else? 参数校验,为了保护自己的代码,一般都会在开发中假设所有的参数都是不可靠的。针对所有的参数校验场景自己一次进行判断及错误信息的...
端午节,唯美,简短,祝福语 菜鸟教程

端午节唯美简短祝福语

五月五日是端午节。财神用水运财,福神用最快的速度降落伞,喜神在路上报喜事,端午节惊喜不断。爱情之神变成浪漫之家,幸运之神就在他心里!下面就是小编带来的端午节祝福语,希望能帮助大家!...
jquery 介绍选择器 菜鸟教程

jquery 介绍选择器

query介绍 jQuery是目前使用最广泛的javascript函数库。据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作...

评论列表 共有 0 条评论

暂无评论