JavaScript实现数组全排列、去重及求最大值算法示例


Posted in Javascript onJuly 30, 2018

本文实例讲述了JavaScript实现数组全排列、去重及求最大值算法。分享给大家供大家参考,具体如下:

1、全排列(递归)

function permutation(arr){
  if (arr.length == 1)
    return arr;
  else if (arr.length == 2)
    return [[arr[0],arr[1]],[arr[1],arr[0]]];
  else {
    var temp = [];
    for (var i = 0; i < arr.length; i++) {
      var save = arr[i];
      arr.splice(i, 1);//取出arr[i]
      var res = permutation(arr);//递归排列arr[0],arr[1],...,arr[i-1],arr[i+1],...,arr[n]
      arr.splice(i, 0, save);//将arr[j]放入数组,保持原来的位置
      for (var j = 0; j < res.length; j++) {
        res[j].push(arr[i]);
        temp.push(res[j]);//将arr[j]组合起来
      }
    }
    return temp;
  }
}

2、数组去重

方法一:

function norepeat(contents) {
  var norepeatContents = [];
  for (var i = 0; i < contents.length; i++) {
    if(norepeatContents.indexOf(contents[i]) == -1)
      norepeatContents.push(contents[i]);
  }
  return norepeatContents;
}

方法二:

function norepeat(contents) {
  var norepeatContents = [], hash = {};
  for (var i = 0; i < contents.length; i++) {
    if(!hash[contents[i]]) {
      norepeatContents.push(contents[i]);
      hash[contents[i]] = true;
    }
  }
  return norepeatContents;
}

3、求数组最大数

方法一:

function findMax(arr) {
  var max = arr[0];
  for (var i = 1; i < arr.length; i++) {
    if (arr[i] > max)
      max = arr[i];
  }
  return max;
}

方法二:

function findMax(arr) {
  return Math.max.apply(Math, arr);
}
Javascript 相关文章推荐
解密效果
Jun 23 Javascript
如何在标题栏显示框架内页面的标题
Feb 03 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
本人自用的global.js库源码分享
Feb 28 Javascript
JS实现双击编辑可修改状态的方法
Aug 14 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
Jun 28 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 Javascript
在react中使用vuex的示例代码
Jul 30 #Javascript
使用JS判断移动端手机横竖屏状态
Jul 30 #Javascript
详解如何在微信小程序中愉快地使用sass
Jul 30 #Javascript
详解JSON Web Token 入门教程
Jul 30 #Javascript
JS中Promise函数then的奥秘探究
Jul 30 #Javascript
浅析java线程中断的办法
Jul 29 #Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 #Javascript
You might like
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
微信小程序实现banner图轮播效果
2020/06/28 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Linux下python制作名片示例
2018/07/20 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
应用电子技术专业个人求职信
2013/09/21 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年租房协议书范本
2014/10/30 职场文书
2014年后勤工作总结
2014/11/18 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
详解python字符串驻留技术
2021/05/21 Python
MySQL 全文索引使用指南
2021/05/25 MySQL
详解Python魔法方法之描述符类
2021/05/26 Python
基于Go语言构建RESTful API服务
2021/07/25 Golang