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魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
详解JS面向对象编程
Jan 24 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
Node.js制作简单聊天室
Jan 12 Javascript
swiper动态改变滑动内容的实现方法
Jan 17 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
JS加密插件CryptoJS实现AES加密操作示例
Aug 16 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
vue-week-picker实现支持按周切换的日历
Jun 26 Javascript
vue解决使用$http获取数据时报错的问题
Oct 30 Javascript
JavaScript中EventBus实现对象之间通信
Oct 18 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禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
jquery 插件开发备注
2010/08/27 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
Python应用库大全总结
2018/05/30 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
模范教师事迹材料
2014/02/10 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
春节联欢会策划方案
2014/05/16 职场文书
我们的节日中秋活动方案
2014/08/19 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
python实现简单的名片管理系统
2021/04/26 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript