iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >常用的JS搜索算法有哪些
  • 638
分享到

常用的JS搜索算法有哪些

2024-04-02 19:04:59 638人浏览 独家记忆
摘要

这篇文章主要介绍“常用的js搜索算法有哪些”,在日常操作中,相信很多人在常用的JS搜索算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常用的JS搜索算法有哪些”的疑惑

这篇文章主要介绍“常用的js搜索算法有哪些”,在日常操作中,相信很多人在常用的JS搜索算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常用的JS搜索算法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.for循环搜索

  • 基本思路:通过for循环遍历数组,找出要搜索的值在数组中的索引,并将其推进新数组

代码实现如下:

const getFnRunTime = require('./getRuntime');     function searchBy(arr, value) {      let result = [];     for(let i = 0, len = arr.length; i < len; i++) {         if(arr[i] === value) {             result.push(i);         }     }     return result  }  getFnRunTime(searchBy, 6)

测试n次稳定后的结果如图:

常用的JS搜索算法有哪些  

2.forEach循环

基本思路和for循环类似:

  function searchByForEach(arr, value) {     let result = [];     arr.forEach((item,i) => {         if(item === value) {             result.push(i);         }     })    return result }

耗时21-24毫秒,可见性能不如for循环(先暂且这么说哈,本质也是如此)。

3.while循环

代码如下:

  function searchByWhile(arr, value) {      let i = arr.length,      result = [];     while(i) {         if(arr[i] === value) {             result.push(i);         }         i--;     }         return result }

可见while和for循环性能差不多,都很优秀,但也不是说forEach性能就不好,就不使用了。foreach相对于for循环,代码减少了,但是foreach依赖IEnumerable。在运行时效率低于for循环。但是在处理不确定循环次数的循环,或者循环次数需要计算的情况下,使用foreach比较方便。而且foreach的代码经过编译系统的代码优化后,和for循环的循环类似。

4.二分法搜索

二分法搜索更多的应用场景在数组中值唯一并且有序的数组中,这里就不比较它和for/while/forEach的性能了。

  • 基本思路:从序列的中间位置开始比较,如果当前位置值等于要搜索的值,则查找成功;若要搜索的值小于当前位置值,则在数列的前半段中查找;若要搜索的值大于当前位置值则在数列的后半段中继续查找,直到找到为止

代码如下:

   function binarySearch(arr, value) {     let min = 0;     let max = arr.length - 1;          while (min <= max) {       const mid = Math.floor((min + max) / 2);          if (arr[mid] === value) {         return mid;       } else if (arr[mid] > value) {         max = mid - 1;       } else {         min = mid + 1;       }     }        return 'Not Found';   }

在数据量很大的场景下,二分法效率很高,但不稳定,这也是其在大数据查询下的一点小小的劣势。

5.哈希表查找

  • 哈希表查找又叫散列表查找,通过查找关键字不需要比较就可以获得需要记录的存储位置,它是通过在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)

哈希表查找的使用场景:

  • 哈希表最适合的求解问题是查找与给定值相等的记录

  • 哈希查找不适合同样的关键字对应多条记录的情况

  • 不适合范围查找,比如查找年龄18~22岁的同学

在这我先给出一个最简版的hashTable,方便大家更容易的理解哈希散列:

 function HashTable() {   var table = [];    // 散列函数   var loseloseHashCode = function(key) {     var hash = 0;     for(var i=0; i<key.length; i++) {       hash += key.charCodeAt(i);     }     return hash % 37   };    // put   this.put = function(key, value) {     var position = loseloseHashCode(key);     table[position] = value;   }    // get   this.get = function(key) {     return table[loseloseHashCode(key)]   }    // remove   this.remove = function(key) {     table[loseloseHashCode(key)] = undefined;   } }

该方法可能会出现数据冲突的问题,不过也有解决方案,由于这里涉及的知识点比较多,后期我会专门推出一篇文章来介绍:

  • 开放定址法

  • 二次探测法

  • 随机探测法

使用web worker优化

通过以上的方法,我们已经知道各种算法的性能和应用场景了,我们在使用算法时,还可以通过WEB  worker来优化,让程序并行处理,比如将一个大块数组拆分成多块,让web  worker线程帮我们去处理计算结果,最后将结果合并,通过worker的事件机制传给浏览器,效果十分显著。

到此,关于“常用的JS搜索算法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 常用的JS搜索算法有哪些

本文链接: https://www.lsjlt.com/news/84222.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 常用的JS搜索算法有哪些
    这篇文章主要介绍“常用的JS搜索算法有哪些”,在日常操作中,相信很多人在常用的JS搜索算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常用的JS搜索算法有哪些”的疑惑...
    99+
    2024-04-02
  • javascript有哪些搜索算法
    本篇内容主要讲解“javascript有哪些搜索算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript有哪些搜索算法”吧!1、二分搜索,当一个集合被排序时,我们可以检查我们的检索...
    99+
    2023-06-25
  • 常用的JS排序算法有哪些
    这篇文章给大家分享的是有关常用的JS排序算法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.冒泡排序var bubbleSort = fun...
    99+
    2024-04-02
  • 面试常见的js算法题有哪些
    这篇文章主要介绍面试常见的js算法题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.排序一般都是给个数组然后排序,有的从小到大,有的从大到小。一定要看清楚。以下都是从小到大的...
    99+
    2024-04-02
  • 2016年百度搜索各大算法有哪些
    这篇文章主要讲解了“2016年百度搜索各大算法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“2016年百度搜索各大算法有哪些”吧!  先来个算法总体回顾,2016年共公布6大算法,下面...
    99+
    2023-06-10
  • 常用的js方法有哪些
    这篇文章将为大家详细讲解有关常用的js方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。数组及对象深拷贝var arr = [1,&#...
    99+
    2024-04-02
  • js常用方法有哪些
    小编给大家分享一下js常用方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:js常用方法demo<!DOC...
    99+
    2024-04-02
  • JS面试中常见的算法题有哪些
    这篇文章主要讲解了“JS面试中常见的算法题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS面试中常见的算法题有哪些”吧! 1.验证一个数是否是素数...
    99+
    2024-04-02
  • 搜索引擎优化SEO常用分析方法有哪些
    这篇文章将为大家详细讲解有关搜索引擎优化SEO常用分析方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何分析竞争对手网站外部因素分析:雅虎查反向链接数量。百度谷歌查询收录量。查询域名使用时间.内...
    99+
    2023-06-10
  • 怎么使用JS排序和搜索算法
    这篇文章主要介绍“怎么使用JS排序和搜索算法”,在日常操作中,相信很多人在怎么使用JS排序和搜索算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用JS排序和搜索算法”...
    99+
    2024-04-02
  • js算法题有哪些
    这篇文章给大家分享的是有关js算法题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素...
    99+
    2024-04-02
  • window10搜索文件的方法有哪些
    在Windows 10中,您可以使用以下几种方法搜索文件:1. 使用“文件资源管理器”搜索栏:打开“文件资源管理器”,位于任务栏的左...
    99+
    2023-09-12
    window10
  • Linux中常用的命令行搜索工具有哪些
    这篇文章主要介绍Linux中常用的命令行搜索工具有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!grep使用 grep 的优势是它几乎可以在任意类 Unix 系统上使用。这个命令的强大之处我相信大家都有所耳闻了。...
    99+
    2023-06-16
  • Java编程中常用的日志索引算法有哪些?
    在Java编程中,日志是一种非常重要的工具。它可以帮助我们记录程序运行时的各种信息,包括错误、警告、调试信息等。但是,如果日志信息太多,我们就需要使用索引算法来快速查找我们需要的信息。本文将介绍Java编程中常用的日志索引算法。 一、散列...
    99+
    2023-08-03
    索引 日志 编程算法
  • js数组的常用方法有哪些
    这篇文章主要介绍了js数组的常用方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js数组的常用方法有哪些文章都会有所收获,下面我们一起来看看吧。 数组的常用方法有下面...
    99+
    2024-04-02
  • 常用的算法思想有哪些
    本篇内容介绍了“常用的算法思想有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!枚举首先,最为简单的思想...
    99+
    2024-04-02
  • win10搜索框打开的方法有哪些
    本文小编为大家详细介绍“win10搜索框打开的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“win10搜索框打开的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。win10搜索框打开方法:右键...
    99+
    2023-06-30
  • 常用的JS操作JSON方法有哪些
    这篇文章给大家分享的是有关常用的JS操作JSON方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、概要简介JSON(JavaScript Object Notation...
    99+
    2024-04-02
  • Sentinel常用的流控算法有哪些
    这篇文章主要讲解了“Sentinel常用的流控算法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Sentinel常用的流控算法有哪些”吧!本文主要讲述...
    99+
    2024-04-02
  • c++常用的排序算法有哪些
    小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c++常用的排序算法//选择排序法SelectionSort(int a...
    99+
    2023-06-03
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作