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 - HTML的request类
Jan 09 Javascript
仿服务器端脚本方式的JS模板实现方法
Apr 27 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
最短的IE判断var ie=!-[1,]分析
May 28 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
mui上拉加载功能实例详解
Apr 13 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
vue+koa2实现session、token登陆状态验证的示例
Aug 30 Javascript
详解如何在Canvas中添加事件的方法
Apr 17 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数据的三种方法
2006/10/09 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
setAttribute 与 class冲突解决
2008/02/17 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
什么是Python变量作用域
2020/06/03 Python
python2和python3哪个使用率高
2020/06/23 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python如何读写字节数据
2020/08/05 Python
森林防火工作方案
2014/02/14 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2014年度培训工作总结
2014/11/27 职场文书
教师个人学习总结
2015/02/11 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
教你部署vue项目到docker
2022/04/05 Vue.js
Nginx 常用配置
2022/05/15 Servers