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 仿关机效果的图片层
Dec 26 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
node.js中的fs.openSync方法使用说明
Dec 17 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
JavaScript阻止回车提交表单的方法
Dec 30 Javascript
基于JS递归函数细化认识及实用实例(推荐)
Aug 07 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
编写一个javascript元循环求值器的方法
Apr 14 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 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/06/28 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
解决python删除文件的权限错误问题
2018/04/24 Python
详解python中的json和字典dict
2018/06/22 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
Django数据库操作之save与update的使用
2020/04/01 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
python/golang 删除链表中的元素
2020/09/14 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
python中yield的用法详解
2021/01/13 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
联强国际笔试题面试题
2013/07/10 面试题
意外伤害赔偿协议书范本
2014/09/28 职场文书
幼儿教师个人总结
2015/02/05 职场文书
遗嘱范文
2015/08/07 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书