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来定义类的规范小结
Nov 19 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
js opener的使用详解
Jan 11 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
Jun 23 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
原生js模拟淘宝购物车项目实战
Nov 18 Javascript
非常酷炫的Bootstrap图片轮播动画
May 27 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
Jan 20 Javascript
jquery中绑定事件的异同
Feb 28 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
vue 请求后台数据的实例代码
Jun 22 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 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中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
python入门基础之用户输入与模块初认识
2016/11/14 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python温度转换实例分析
2018/01/17 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
高级Java程序员面试要点
2013/08/02 面试题
冰淇淋开店创业计划书
2014/02/01 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
公司节能减排倡议书
2014/05/14 职场文书
幼儿发展评估方案
2014/06/11 职场文书
给老婆的保证书
2015/01/16 职场文书
在校学生证明格式
2015/06/24 职场文书
2016年母亲节寄语
2015/12/04 职场文书
python实现简单倒计时功能
2021/04/21 Python