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 相关文章推荐
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
JQuery+CSS实现图片上放置按钮的方法
May 29 Javascript
浅谈jquery.fn.extend与jquery.extend区别
Jul 13 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 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
杏林同学录(九)
2006/10/09 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
python2与python3的print及字符串格式化小结
2018/11/30 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
python爬虫请求头设置代码
2020/07/28 Python
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
美术教学感言
2014/02/22 职场文书
遗嘱继承公证书
2014/04/09 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
社区反邪教工作方案
2014/06/16 职场文书
年会主持人开场白台词
2015/05/29 职场文书
博士论文答辩开场白
2015/06/01 职场文书
初婚初育证明范本
2015/06/18 职场文书
清洁工工作总结
2015/08/11 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Python利用folium实现地图可视化
2021/05/23 Python
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server