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 HashTable
Jan 22 Javascript
JS 文件本身编码转换 图文教程
Oct 12 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
Jan 05 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
Nov 19 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 Javascript
原生js制作日历控件实例分享
Apr 06 Javascript
Javascript实现跑马灯效果的简单实例
May 31 Javascript
Node.js下自定义错误类型详解
Oct 17 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
Dec 06 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
JavaScript实现简单进度条效果
Mar 25 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编程网上资源导航
2006/10/09 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
js实现交通灯效果
2017/01/13 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
python 图片去噪的方法示例
2019/07/09 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
python em算法的实现
2020/10/03 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
装饰活动策划方案
2014/02/11 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
情人节单身感言
2015/08/03 职场文书
校运会广播稿
2015/08/19 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
导游词之无锡唐城
2019/12/12 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python