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 相关文章推荐
优化JavaScript脚本的性能的几个注意事项
Dec 22 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
Nov 24 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
Dec 07 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
JQuery each()函数如何优化循环DOM结构的性能
Dec 10 Javascript
将Datatable转化成json发送前台实现思路
Sep 06 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 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调用mysql存储过程
2007/02/14 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
python导出hive数据表的schema实例代码
2018/01/22 Python
Python判断有效的数独算法示例
2019/02/23 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
django-filter和普通查询的例子
2019/08/12 Python
python中selenium库的基本使用详解
2020/07/31 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
春节请假条
2014/04/11 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
重阳节简报
2015/07/20 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL