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 相关文章推荐
pjblog中的UBBCode.js
Apr 25 Javascript
javascript 不间断的图片滚动并可点击
Jan 15 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 Javascript
19个很有用的 JavaScript库推荐
Jun 27 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
js验证身份证号有效性并提示对应信息
Oct 19 Javascript
JavaScript中捕获与冒泡详解及实例
Feb 03 Javascript
JavaScript实现微信号随机切换代码
Mar 09 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
JQuery事件冒泡和默认行为代码实例
May 13 jQuery
在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实现数组的笛卡尔积运算示例
2017/12/15 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
使用JavaScript破解web
2018/09/28 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
PyMongo安装使用笔记
2015/04/27 Python
python中字符串前面加r的作用
2015/06/04 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
python实现接口并发测试脚本
2019/06/25 Python
python 有效的括号的实现代码示例
2019/11/11 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
联想C++笔试题
2012/06/13 面试题
夜班门卫岗位职责
2013/12/09 职场文书
保护环境倡议书100字
2014/05/19 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
材料物理专业求职信
2014/09/01 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
辞职离别感言
2015/08/04 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP