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 添加和移除函数的通用方法
Oct 20 Javascript
TextArea设置MaxLength属性最大输入值的js代码
Dec 21 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
浅谈时钟的生成(js手写简洁代码)
Aug 20 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
如何理解Vue的作用域插槽的实现原理
Aug 19 Javascript
js监听html页面的上下滚动事件方法
Sep 11 Javascript
Angular CLI 使用教程指南参考小结
Apr 10 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 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代码的53条建议
2008/03/27 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
python发送arp欺骗攻击代码分析
2014/01/16 Python
python格式化字符串实例总结
2014/09/28 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
上班睡觉检讨书
2014/01/09 职场文书
大学生入党思想汇报
2014/01/14 职场文书
《藏戏》教学反思
2014/02/11 职场文书
住宅使用说明书
2014/05/09 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
趣味运动会加油词
2015/07/18 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android