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 相关文章推荐
extJs 下拉框联动实现代码
Apr 09 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 Javascript
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
JS实现日期加减的方法
Nov 29 Javascript
JS中的作用域链
Mar 01 Javascript
深入理解node.js之path模块
May 03 Javascript
es6学习之解构时应该注意的点
Aug 29 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
详解Chart.js轻量级图表库的使用经验
May 22 Javascript
node中的session的具体使用
Sep 14 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 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
WHOIS类的修改版
2006/10/09 PHP
php 特殊字符处理函数
2008/09/05 PHP
很好用的PHP数据库类
2009/05/27 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
python编写爬虫小程序
2015/05/14 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
采购部经理岗位职责
2014/02/10 职场文书
国际贸易专业求职信
2014/06/04 职场文书
优秀会计求职信
2014/07/04 职场文书
数学教育专业求职信
2014/07/22 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
2014年售票员工作总结
2014/11/19 职场文书
消防演习感想
2015/08/10 职场文书
八年级作文之我的母亲
2019/12/10 职场文书