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的IE和Firefox兼容性汇编
Jul 01 Javascript
javascript 操作select下拉列表框的一点小经验
Mar 20 Javascript
关于firefox的ElementTraversal 接口 使用说明
Nov 11 Javascript
js中的如何定位固定层的位置
Jun 15 Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
Dec 04 Javascript
webpack学习教程之publicPath路径问题详解
Jun 17 Javascript
详解vue-cli 接口代理配置
Dec 13 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
抖音短视频(douyin)去水印工具的实现代码
Mar 30 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
smarty循环嵌套用法示例分析
2016/07/19 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
js计数器代码
2006/11/04 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
移动web开发之touch事件实例详解
2018/01/17 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
js实现表格数据搜索
2020/08/09 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
详解Python的三种可变参数
2019/05/08 Python
Django stark组件使用及原理详解
2019/08/22 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python @property及getter setter原理详解
2020/03/31 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
开办加工厂创业计划书
2014/01/03 职场文书
直接有效的自我评价
2014/01/11 职场文书
医学专业大学生求职信
2014/07/12 职场文书
农业项目建议书
2014/08/25 职场文书
红白喜事主持词
2015/07/06 职场文书
新年祝酒词大全
2015/08/11 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP