常见的前端JS算法总结

本篇文章给大家分享的内容是常见的前端JS算法总结,有着一定的参考价值,有需要的朋友可以参考一下

排序算法

1、冒泡排序

function bubbleSort(arr){   var i = 0,      j = 0;    for(i=1; i" 从小到大排序        // " arr[j+1]){        temp = arr[j];        arr[j] = arr[j+1];        arr[j+1] = temp;      }    }  }  return arr;}

登录后复制

2、快速排序

function quickSort(arr,l,r){  if(l x)        j--;                  if(i

3、二路归并

function merge(left, right) {    var result = [],        il = 0,        ir = 0;              while (il 

字符串操作

1、判断回文字符串

function palindrome(str){  // W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。  var re = /[W_]/g;    // 将字符串变成小写字符,并干掉除字母数字外的字符  var lowRegStr = str.toLowerCase().replace(re,'');    // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome  if(lowRegStr.length===0) return true;    // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome  if(lowRegStr[0]!=lowRegStr[lowRegStr.length-1]) return false;    //递归  return palindrome(lowRegStr.slice(1,lowRegStr.length-1));}

登录后复制

2、翻转字符串

思路一:反向遍历字符串

function reverseString(str){  var tmp = '';    for(var i=str.length-1; i>=0; i--)    tmp += str[i];  return tmp}

登录后复制

思路二:转化成array操作

function reverseString(str){  var arr = str.split("");    var i = 0,j = arr.length-1;  while(i

3、生成指定长度随机字符串

function randomString(n){  var str = 'abcdefghijklmnopqrstuvwxyz0123456789';    var tmp = '';    for(var i=0; i

4、统计字符串中次数最多字母

function findMaxDuplicateChar(str) {  if(str.length == 1) {      return str;  }    var charObj = {};    for(var i = 0; i = maxValue) {      maxChar = k;      maxValue = charObj[k];    }  }    return maxChar + ':' + maxValue;}

登录后复制

数组操作

1、数组去重

function unique(arr){  var obj = {}    var result = []    for(var i in arr){      if(!obj[arr[i]]){      obj[arr[i]] = true;      result.push(arr[i]);    }  }    return result;}

登录后复制

2、数组中最大差值

function getMaxProfit(arr){  var min = arr[0],      max = arr[0];    for(var i = 0; i  max) max = arr[i];  }    return max - min;}

登录后复制

其他常见算法

1、阶乘

非递归实现

function factorialize(num) {  var result = 1;      if(num 1) {      result *= num--;    }        return result;}

登录后复制

递归实现

function factorialize(num) {  var result = 1;    if(num  1) return num*factorialize(num-1);}

登录后复制

2、生成菲波那切数列

强行递归实现

function getfib(n){  if(n == 0) return 0;    if(n == 1) return 1;    if(n > 1) return getfib(n-1) + getfib(n-2);}function fibo(len){    var fibo = [];        for(var i = 0; i 

简约非递归实现

function getFibonacci(n) {  var fibarr = [];    var i = 0;    while(i 

3、二分查找

非递归实现

function binary_search(arr, key) {  var low = 0,      high = arr.length - 1;    while(low  arr[mid]){      low = mid + 1;    }else if(key 

递归实现

function binary_search2(arr, low, high, key) {  if(low > high) return -1;    var mid = parseInt((low + high)/2);    if(key == arr[mid]) {      return mid;  } else if(key > arr[mid]) {      return binary_search2(arr, mid+1, high, key);  } else if(key 

登录后复制

以上就是常见的前端JS算法总结的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2773484.html

(0)
上一篇 2025年3月8日 13:51:29
下一篇 2025年3月8日 13:51:35

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 实现文件上传的AjaxUpLoad.js

    这次给大家带来实现文件上传的AjaxUpLoad.js,使用实现文件上传AjaxUpLoad.js的注意事项有哪些,下面就是实战案例,一起来看一下。 1、创建页面并编写HTML 上传文档:  登录后复制 上传图片:  登录后复制 2、引用A…

    编程技术 2025年3月8日
    200
  • Vue.js的ul-li标签如何仿制select标签

    这次给大家带来Vue.js的ul-li标签如何仿制select标签,Vue.js的ul-li标签如何select标签注意事项有哪些,下面就是实战案例,一起来看一下。 目标:用ul-li标签结合Vue.js知识做一个模仿select标签的下拉…

    编程技术 2025年3月8日
    200
  • vue.js中Axios的概念以及使用方法

    本篇文章给大家分享的内容是vue.js中Axios的概念以及使用方法,有着一定的参考价值,有需要的朋友可以参考一下     1.什么是axios    https://www.kancloud.cn/yunye/axios/234845这是…

    2025年3月8日
    200
  • 几种js中this函数的调用方式

    javascript中的this含义非常丰富,它可以是全局对象,当前对象或者是任意对象,这都取决于函数的调用方式。函数有以下几种调用方式:作为对象方法调用、作为函数调用、作为构造函数调用、apply或call调用。 对象方法调用 作为对象方…

    编程技术 2025年3月8日
    200
  • js数组去重以及如何判断出字符串出现次数最多的字符

    本篇文章给大家分享的内容是s数组去重以及如何统计字符串出现最多的字符的代码分享,有着一定的参考价值,有需要的朋友可以参考一下 数组去重: 数组去重function test(str){ let len = str.length; let s…

    编程技术 2025年3月8日
    200
  • 5个关于JavaScript数组的迭代方法

    本篇文章给大家分享的内容是5个关于JavaScript数组的迭代方法,有着一定的参考价值,有需要的朋友可以参考一下 ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数:要在每一项运行的函数和(可选的)运行函数的作用域对象…

    编程技术 2025年3月8日
    200
  • 源生JS怎样实现todolist功能

    这次给大家带来源生JS怎样实现todolist功能,源生JS实现todolist功能的注意事项有哪些,下面就是实战案例,一起来看一下。 该项目主要可以练习js操控dom,事件,事件触发之间的逻辑关系,以及如何写入缓存,获取缓存。 主要功能:…

    编程技术 2025年3月8日
    200
  • 深入了解vue.js 之watch用法

    本篇文章给大家分享的内容是深入了解vue.js 之watch用法,有着一定的参考价值,有需要的朋友可以参考一下 watch: 观测vue实例上的数据变动,对应一个对象, 键:就是需要监测的那个东西, 值: 1.可以是当键变化时执行的函数,有…

    编程技术 2025年3月8日
    200
  • Immutable.js怎样实现撤销重做效果

    这次给大家带来Immutable.js怎样实现撤销重做效果,Immutable.js实现撤销重做效果的注意事项有哪些,下面就是实战案例,一起来看一下。 浏览器的功能越来越强大,许多原来由其他客户端提供的功能渐渐转移到了前端,前端应用也越来越…

    编程技术 2025年3月8日
    200
  • 使用Node.js做出命令行工具

    这次给大家带来使用Node.js做出命令行工具,使用Node.js做出命令行工具的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了用Node.js写一个简单的命令行工具,分享给大家,具体如下: 操作系统需要为Linux 1. 目…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论