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 相关文章推荐
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
jquery mobile开发常见问题分析
Jan 21 Javascript
封装属于自己的JS组件
Jan 27 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
Angularjs中数据绑定的实例详解
Aug 25 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 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
重置版战役片段
2020/04/09 魔兽争霸
PHP的博客ping服务代码
2012/02/04 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
javascript操作数组详解
2014/12/17 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
python将图片转base64,实现前端显示
2020/01/09 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
创业资金计划书
2014/02/06 职场文书
《颐和园》教学反思
2014/02/26 职场文书
4s店活动策划方案
2014/08/25 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书