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 相关文章推荐
js 中 document.createEvent的用法
Aug 29 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
JS实现为排序好的字符串找出重复行的方法
Mar 02 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
详解js前端代码异常监控
Jan 11 Javascript
jQuery validata插件实现方法
Jun 25 jQuery
JavaScript中document.referrer的用法详解
Jul 04 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
React中常见的动画实现的几种方式
Jan 10 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
五个PHP程序员工具
2008/05/26 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
php-app开发接口加密详解
2018/04/18 PHP
jquery插件开发方法(初学者)
2012/02/03 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
pytorch permute维度转换方法
2018/12/14 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
编辑找工作求职信范文
2013/12/16 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
高中生逃课检讨书
2014/10/10 职场文书
父亲节寄语大全
2015/02/27 职场文书
反邪教观后感
2015/06/11 职场文书
创业计划书之家政服务
2019/09/18 职场文书
nginx 配置指令之location使用详解
2022/05/25 Servers