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 相关文章推荐
JS效率个人经验谈(8-15更新),加入range技巧
Jan 09 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
jQuery动画与特效详解
Feb 01 Javascript
javascript自定义in_array()函数实现方法
Aug 03 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
老生常谈js中0到底是 true 还是 false
Mar 08 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
Mar 15 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
微信小程序自动客服功能
Nov 02 Javascript
JavaScript选择排序算法原理与实现方法示例
Aug 06 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
React之PureComponent的使用作用
2018/07/10 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
python lambda的使用详解
2021/02/26 Python
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
Ejb技术面试题
2015/04/29 面试题
正规的求职信范文分享
2013/12/11 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
高二英语教学反思
2014/01/19 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
满月酒主持词
2014/03/27 职场文书
公开承诺书格式
2014/05/21 职场文书