JS实现的全排列组合算法示例


Posted in Javascript onOctober 09, 2017

本文实例讲述了JS实现的全排列组合算法。分享给大家供大家参考,具体如下:

全排列组合算法,例如a,b,c,d进行全排列组合,则组合结果为:a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd。实现思路:从数据源拿出一个元素,依次与已存在的组合数据进行组合,循环上面操作直到数据源没有数据为止。

例子:

数据源a,b,c

1.拿出a,组合数据group为空,插入数据源a元素到组合数据group,此时group=[a]
2.拿出b,组合数据group拿出a,a和b组合,得到ab,把数据源b元素、ab插入组合数据group,此时group=[a,b,ab]
3.拿出c,组合数据group拿出a、b、ab,分别与c组合,分别得到ac、bc、abc,把数据源c元素、ac、bc、abc插入组合数据group,此时group=[a,b,ab,c,ac,bc,abc]

js代码:

var data = ['a','b','c','d'];
function getGroup(data, index = 0, group = []) {
  var need_apply = new Array();
  need_apply.push(data[index]);
  for(var i = 0; i < group.length; i++) {
    need_apply.push(group[i] + data[index]);
  }
  group.push.apply(group, need_apply);
  if(index + 1 >= data.length) return group;
  else return getGroup(data, index + 1, group);
}
console.log(getGroup(data));

运行输出结果:

JS实现的全排列组合算法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
jquery focus(fn),blur(fn)方法实例代码
Dec 16 Javascript
jQuery的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
实用的Jquery选项卡TAB示例代码
Aug 28 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
Jun 16 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
Mar 17 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
Jun 21 Javascript
socket.io实现在线群聊功能
Apr 07 Javascript
vue-router路由参数刷新消失的问题解决方法
Jun 17 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
一文了解vue-router之hash模式和history模式
May 31 Javascript
layer提示框添加多个按钮选择的实例
Sep 12 Javascript
js + css实现标签内容切换功能(实例讲解)
Oct 09 #Javascript
jQuery ajax调用webservice注意事项
Oct 08 #jQuery
js用类封装pop弹窗组件
Oct 08 #Javascript
利用js编写网页进度条效果
Oct 08 #Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 #Javascript
JS动态修改网页body的背景色实例代码
Oct 07 #Javascript
JS实现简单表格排序操作示例
Oct 07 #Javascript
You might like
php curl 上传文件代码实例
2015/04/27 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
显示、隐藏密码
2006/07/01 Javascript
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
JS 验证码功能的三种实现方式
2018/11/26 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
python中的global关键字的使用方法
2019/08/20 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
大课间活动实施方案
2014/03/06 职场文书
结对共建工作方案
2014/06/02 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
实习生工作证明范本
2014/09/14 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
Nginx反向代理学习实例教程
2021/10/24 Servers
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL