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 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
Sep 17 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
vue短信验证性能优化如何写入localstorage中
Apr 25 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
Jun 14 Javascript
layui table 参数设置方法
Aug 14 Javascript
vue slots 组件的组合/分发实例
Sep 06 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
Sep 20 Javascript
JavaScript异步操作的几种常见处理方法实例总结
May 11 Javascript
详解node.js 事件循环
Jul 22 Javascript
原生JavaScript实现购物车
Jan 10 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执行速度全攻略
2006/10/09 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
详解redux异步操作实践
2018/08/15 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
在Python下尝试多线程编程
2015/04/28 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python读取图片任意范围区域
2019/01/23 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
大学生的自我鉴定范文
2014/01/21 职场文书
结对共建协议书
2014/08/20 职场文书
婚前财产协议书范本
2014/10/19 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
公司周年庆典致辞
2015/07/30 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书