js字典和散列表实例详解

js字典 字典则是以[键,值]的形式来存储元素。字典也称作映射,本文主要和大家分享js字典和散列表实例详解,希望能帮助到大家。

function Dictionary() {var items = {};this.has = function(key) {return key in items;}this.set = function(key,value){items[key] = value;}this.remove = function(Key){if(this.has(Key)){delete items[Key];return true;}return false;}this.get = function(key){return this.has(Key)?items[Key]:undefined;}this.values = function() {var values = {};for (var k in items) { //{1}if (this.has(k)) {values.push(items[k]); //{2}}}return values;};this.size = function(){return Object.keys(items).length; //{4}};this.sizeLegacy = function(){var count = 0;for(var prop in items) { //{5}if(items.hasOwnProperty(prop)) //{6}++count; //{7}}return count;};this.getItems = function() {return items;}}

登录后复制

散列表

function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 0;for(var i = 0;i

hash值相同的时候有冲突

19 - GandalfHashTable.js:12 29 - JohnHashTable.js:12 16 - TyrionHashTable.js:12 16 - AaronHashTable.js:12 13 - DonnieHashTable.js:12 13 - AnaHashTable.js:12 5 - JonathanHashTable.js:12 5 - JamieHashTable.js:12 5 - SueHashTable.js:12 32 - MindyHashTable.js:12 32 - PaulHashTable.js:12 10 - NathanHashTable.js:24 5: sue@email.comHashTable.js:24 10: nathan@email.comHashTable.js:24 13: ana@email.comHashTable.js:24 16: aaron@email.comHashTable.js:24 19: gandalf@email.comHashTable.js:24 29: johnsnow@email.comHashTable.js:24 32: paul@email.com

登录后复制

1. 分离链接
分离链接法包括为散列表的每一个位置创建一个链表并将元素存储在里面。它是解决冲突的

最简单的方法,但是它在 HashTable 实例之外还需要额外的存储空间。重写put get remove print'方法

function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 0;for(var i = 0;i

2. 线性探查
另一种解决冲突的方法是线性探查。当想向表中某个位置加入一个新元素的时候,如果索引
为index的位置已经被占据了,就尝试index+1的位置。如果index+1的位置也被占据了,就尝试

index+2的位置,以此类推

function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 0;for(var i = 0;i

3.创建更好的散列函数
我们实现的“lose lose”散列函数并不是一个表现良好的散列函数,因为它会产生太多的冲
突。如果我们使用这个函数的话,会产生各种各样的冲突。一个表现良好的散列函数是由几个方
面构成的:插入和检索元素的时间(即性能),当然也包括较低的冲突可能性。我们可以在网上
找到一些不同的实现方法,或者也可以实现自己的散列函数

function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 5381;for(var i = 0;i

登录后复制

以上就是js字典和散列表实例详解的详细内容,更多请关注【创想鸟】其它相关文章!

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

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

(0)
上一篇 2025年3月8日 16:28:07
下一篇 2025年3月8日 16:28:18

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

相关推荐

  • nodejs解析xml字符串为对象的实例

    本文主要和大家介绍了nodejs实现解析xml字符串为对象的方法,涉及nodejs针对xml格式字符串的解析与转换相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。 var xmlreader = require(“xmlreader”…

    编程技术 2025年3月8日
    200
  • nodejs连接mongodb数据库的方法

    本文主要和大家介绍了nodejs实现连接mongodb数据库的方法,结合实例形式分析了nodejs针对mongodb数据库的简单连接、查询及关闭等操作技巧,需要的朋友可以参考下,希望能帮助到大家。 var MongoClient = req…

    编程技术 2025年3月8日
    200
  • nodejs如何实现的简单web服务器功能

    本文主要和大家介绍了nodejs实现的简单web服务器功能,结合实例形式分析了nodejs构建web服务器的相关监听、响应、数据处理等操作技巧,需要的朋友可以参考下,希望能帮助到大家。 前端js代码: $.ajax({ url:'…

    编程技术 2025年3月8日
    200
  • nodejs访问及操作mysql数据库的方法

    本文主要和大家介绍了nodejs简单访问及操作mysql数据库的方法,结合实例形式分析了nodejs创建mysql连接、执行sql语句及关闭连接等相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。 var mysql = require…

    编程技术 2025年3月8日
    200
  • 五种JS导出Excel的方法

    本文主要和大家介绍了js实现导出excel的五种方法,结合实例形式较为详细的分析了基于table表格导出excel文件的相关操作技巧,并附源码供读者下载参考,需要的朋友可以参考下,希望能帮助到大家。 这五种方法前四种方法只支持IE浏览器,最…

    编程技术 2025年3月8日
    200
  • js与canvas合成图片做出微信公众号海报功能

    这次给大家带来js与canvas合成图片做出微信公众号海报功能,js与canvas合成图片做出微信公众号海报功能的注意事项有哪些,下面就是实战案例,一起来看一下。 在微信公众号开发中,很多时候都有个需求是一张图加上头像和昵称或者其他数据生成…

    2025年3月8日 编程技术
    200
  • JavaScript数据类型转换原则详解

    javascript是一门弱类型(或称动态类型)的语言,即变量的类型是不确定的。下面通过本文给大家分享javascript数据类型转换小结,包括显示转换的数据类型和隐式的数据类型转换,希望能帮助到大家。 我们都知道JavaScript是一门…

    2025年3月8日
    200
  • 怎样让js暂停执行

    这次给大家带来怎样让js暂停执行,让js暂停执行的注意事项有哪些,下面就是实战案例,一起来看一下。 JavaScript是一门单线程但是可处理异步任务的脚本语言,是没有提供sleep等类似的方法的,当有需求需要暂停js脚本时,可以使用以下的…

    2025年3月8日 编程技术
    200
  • js怎样判断浏览器的信息

    这次给大家带来js怎样判断浏览器的信息,关于js获取各种浏览器信息,例如微信浏览器,qq内置浏览器,电脑火狐浏览器,qq浏览器等等的注意事项有哪些,下面就是实战案例,一起来看一下。 判断手机相关浏览器 if (browser.version…

    编程技术 2025年3月8日
    200
  • JS怎样刷新父页面

    这次给大家带来JS怎样刷新父页面,JS刷新父页面的注意事项有哪些,下面就是实战案例,一起来看一下。 用iframe、弹出子页面刷新父页面iframe parent.location.reload(); 登录后复制 弹出子页面 window.…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论