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 相关文章推荐
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
js控制div及网页相关属性的代码
Dec 19 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
Javascript中arguments和arguments.callee的区别浅析
Apr 24 Javascript
javascript中caller和callee详解
Aug 10 Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
ES6新特性之函数的扩展实例详解
Apr 01 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
Jan 26 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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脚本中include文件出错解决方法
2008/11/20 PHP
php备份数据库类分享
2015/04/14 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
jQuery常用选择器详解
2017/07/17 jQuery
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
js 函数性能比较方法
2020/08/24 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python中多线程及程序锁浅析
2015/01/21 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python守护线程用法实例
2017/06/23 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
如何用Python 加密文件
2020/09/10 Python
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
事业单位请假制度
2014/01/13 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
资料员岗位职责
2015/02/10 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书