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 相关文章推荐
json 定义
Jun 10 Javascript
网页禁用右键实现代码(JavaScript代码)
Oct 29 Javascript
JQUERY设置IFRAME的SRC值的代码
Nov 30 Javascript
js中的json对象详细介绍
Oct 29 Javascript
javascript实现图片循环渐显播放的方法
Feb 24 Javascript
javascript实现将文件保存到本地方法汇总
Jul 26 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
Dec 20 Javascript
老生常谈combobox和combotree模糊查询
Apr 17 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
vscode vue 文件模板的配置方法
Jul 23 Javascript
JavaScript封装单向链表的示例代码
Sep 17 Javascript
Openlayers实现地图全屏显示
Sep 28 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学习的路线图
2013/07/10 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
javascript self对象使用详解
2016/10/18 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
nodeJS微信分享
2017/12/20 NodeJs
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
SQL Server笔试题
2012/01/10 面试题
珠宝店促销方案
2014/03/21 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python