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 相关文章推荐
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
悬浮数字的实现案例
Feb 19 Javascript
js实现数组转换成json
Jun 26 Javascript
超链接怎么正确调用javascript函数
May 23 Javascript
js中开关变量使用实例
Feb 24 Javascript
JavaScript 巧学巧用
May 23 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
vue中实现上传文件给后台实例详解
Aug 22 Javascript
Vue Router的手写实现方法实现
Mar 02 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 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将文本文件转换csv输出的方法
2014/12/31 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
javascript 写类方式之五
2009/07/05 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
python中的内置函数getattr()介绍及示例
2014/07/20 Python
Python实现简单的代理服务器
2015/07/25 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python 类的特殊成员解析
2018/06/20 Python
Python玩转Excel的读写改实例
2019/02/22 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
在python image 中实现安装中文字体
2020/05/16 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
护士自荐信怎么写
2013/10/18 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
中国好声音华少广告词
2014/03/17 职场文书
软件售后服务承诺书
2014/05/21 职场文书
高中同学会活动方案
2014/08/14 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
学校运动会广播稿
2014/10/11 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
Python实现日志实时监测的示例详解
2022/04/06 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技