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判断chrome浏览器的方法
Mar 26 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
JavaScript中使用自然对数ln的方法
Jun 14 Javascript
基于JavaScript实现添加到购物车效果附源码下载
Aug 22 Javascript
微信小程序 swiper组件轮播图详解及实例
Nov 16 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 Javascript
Postman的下载及安装教程详解
Oct 16 Javascript
js实现json数组分组合并操作示例
Feb 12 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
Vue3为什么这么快
Sep 23 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
php数据库抽象层 PDO
2011/05/07 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
PDO::exec讲解
2019/01/28 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
玩转方法:call和apply
2014/05/08 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
js获取域名的方法
2015/01/27 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
超简单使用Python换脸实例
2019/03/27 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python之生成多层json结构的实现
2020/02/27 Python
python中_del_还原数据的方法
2020/12/09 Python
柏林通行证:Berlin Pass
2018/04/11 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
学生思想表现的评语
2014/01/30 职场文书
骨干教师申报材料
2014/12/17 职场文书
教师岗位职责
2015/02/03 职场文书
会计简历自我评价
2015/03/10 职场文书
Go语言grpc和protobuf
2022/04/13 Golang