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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
Oct 01 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
JavaScript命名空间模式实例详解
Jun 20 Javascript
Node.js学习教程之Module模块
Sep 03 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 Javascript
vue3.0中setup使用(两种用法)
Dec 02 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中如何在有限的内存中读取大文件
2013/07/02 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Python设计模式之原型模式实例详解
2019/01/18 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
公司业务主管岗位职责
2013/12/07 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
青年文明号口号
2014/06/17 职场文书
宣传标语大全
2014/07/01 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书