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 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
Nov 22 Javascript
jquery validate表单验证插件
Sep 06 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
May 11 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
微信小程序scroll-view点击项自动居中效果的实现
Mar 25 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
php array_intersect()函数使用代码
2009/01/14 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python中的choice()方法使用详解
2015/05/15 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python 等差数列末项计算方式
2020/05/03 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
学校消防安全责任书
2014/07/23 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
医德医风自我评价2015
2015/03/03 职场文书
雷锋的故事观后感
2015/06/10 职场文书
居住证明范文
2015/06/17 职场文书
2015选调生工作总结
2015/07/24 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
MySQL学习之基础操作总结
2022/03/19 MySQL