网站首页 > 基础教程 正文
笛卡尔乘积是指在数学中,两个集合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),还不是最优,所以有更好的实现方法欢迎探索哦~
原文地址:https://zhuanlan.zhihu.com/p/86885334
猜你喜欢
- 2024-11-06 javascript夯实基础-3 javascript基础教程9
- 2024-11-06 JavaScript 数组方法 js数组方法some
- 2024-11-06 JAVASCRIPT数组详解(一) js数组菜鸟教程
- 2024-11-06 JavaScript 数组的常用方法 js中数组的方法
- 2024-11-06 JavaScript 数组嵌套对象的排序方法
- 2024-11-06 javascript中的内存管理 js内存条
- 2024-11-06 JS的赋值与深浅拷贝实例 js 深度复制
- 2024-11-06 讲透40个JavaScript数组方法的特点
- 2024-11-06 Javascript 字符串和数组同名的方法有哪些?
- 2024-11-06 使用nginx-http-concat优化网站响应
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)