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与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
Mootools 1.2教程 事件处理
Sep 15 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
jQuery实现边框动态效果的实例代码
Sep 23 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
微信小程序实现animation动画
Jan 26 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
elementUI select组件使用及注意事项详解
May 29 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
在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 使用redis简单示例分享
2015/03/05 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
python使用mysqldb连接数据库操作方法示例详解
2013/12/03 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
教育局长自荐信范文
2013/12/22 职场文书
收银员岗位职责
2014/02/07 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
购房协议书
2014/04/11 职场文书
体育课课后反思
2014/04/24 职场文书
工作总结与自我评价
2014/09/18 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
优秀创业计划书分享
2019/07/19 职场文书