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 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
node.js开机自启动脚本文件
Dec 24 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
Mar 21 Javascript
Node.js中npm常用命令大全
Jun 09 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 Javascript
webstorm中vue语法的支持详解
May 09 Javascript
@angular前端项目代码优化之构建Api Tree的方法
Dec 24 Javascript
微信小程序实现的图片保存功能示例
Apr 24 Javascript
JS开发 富文本编辑器TinyMCE详解
Jul 19 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 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
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
学习jquery之一
2007/04/27 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
理解Javascript闭包
2013/11/01 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
浅谈node的事件机制
2017/10/09 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
玩转python爬虫之正则表达式
2016/02/17 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
python实现智能语音天气预报
2019/12/02 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
酒店副总岗位职责
2013/12/24 职场文书
学生感冒英文请假条
2014/02/04 职场文书
企业业务员岗位职责
2014/03/14 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
秘书英文求职信
2014/04/16 职场文书
旅游节目策划方案
2014/05/26 职场文书
公司贷款承诺书
2014/05/30 职场文书
2014年幼师工作总结
2014/11/22 职场文书
运动会闭幕式主持词
2015/07/01 职场文书