如何用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) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月20日

ThinkPHP5快速入门

ThinkPHP5快速入门目 录零、序言一、基础二、URL和路由三、请求和响应四、数据库五、查询语言六、模型和关联 (1)模型定义 (2)基础操作 (3)读取器和修改器 (4)类型转换和自动完成 (5)查询范围 (6)输入和验证 (7)关联 (8)模型输出七、视图和模板八、调试和日志九、API开发十、命令行工具十一、扩展十二、杂项SessionCookie验证

ThinkPHP5快速入门基础

ThinkPHP5快速入门基础一、基础快速入门 ( 一 ) :基础本章介绍了 ThinkPHP5 .0 的安装及基本使用 ,并给出了一个最简单的示例带你了解如何开始开发 ,主要包 含 :简介官网下载 omposer安装和更新CGit下载和更新目录结构运行环境入口文件调试模式控制器视图读取数据总结在学习 ThinkPHP5.0 之前 ,如果你还不理解面向对象和命名空间的概念 ,建议首先去PHP手册恶

热门专题

APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
金诺幼儿园(春城路金诺幼儿园)|昆明官渡区幼儿园,幼儿园报名,官渡区幼儿园,春城路幼儿园,幼儿园招生,学前班,昆明幼儿园,金诺幼儿园,环城南路幼儿园,石井路幼儿园
金诺幼儿园(春城路金诺幼儿园)
安徽中源管业有限公司|安徽中源管业有限公司,安徽中源管业有限公司介绍,安徽中源管业有限公司电话,安徽中源管业有限公司地址,安徽中源管业有限公司厂家,安徽中源管业有限公司电力管,安徽中源管业有限公司管材
安徽中源管业有限公司
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
昆明综合高中|昆明综合高中
昆明综合高中
弥勒综合高中|弥勒综合高中
弥勒综合高中
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部