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 fckeditor集成代码
May 10 Javascript
jquery 事件对象属性小结
Apr 27 Javascript
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
简介AngularJS的HTML DOM支持情况
Jun 17 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 Javascript
详解JS中的立即执行函数
Feb 24 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
echarts大屏字体自适应的方法步骤
Jul 12 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简单的会话类代码
2011/08/08 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
使用PDB简单调试Python程序简明指南
2015/04/25 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
五年级语文教学反思
2014/01/30 职场文书
求职简历的自我评价
2014/01/31 职场文书
意向书范本
2014/07/29 职场文书
快递员岗位职责
2014/09/12 职场文书
2015年体育部工作总结
2015/04/02 职场文书
雷锋之歌观后感
2015/06/10 职场文书
SpringBoot生成License的实现示例
2021/06/16 Java/Android