微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

js实现HashTable(哈希表)的实例分析

一、javascript哈希表简介

javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascript里面若没有,感觉非常不顺手。细细看来,其实javascript的object的属性其实与哈希表非常类似。

如:

rush:js;"> var person = {}; person["name"] = "关羽";

我们只需要在其基础上再封装一些HashTable的函数,就能够得到一个精简版的哈希表。

加入函数如下:

irstRow" style="background-color: #dddcd9">
函数名添加项删除一项获取所有的值的数组获取所有的key的数组获取项总数

二、代码实现

其具体的实现可以查看代码,都不算很复杂的东西。

rush:js;"> function HashTable() { var size = 0; var entry = new Object(); this.add = function (key,value) { if (!this.containsKey(key)) { size++; } entry[key] = value; } this.getValue = function (key) { return this.containsKey(key) ? entry[key] : null; } this.remove = function (key) { if (this.containsKey(key) && (delete entry[key])) { size--; } } this.containsKey = function (key) { return (key in entry); } this.containsValue = function (value) { for (var prop in entry) { if (entry[prop] == value) { return true; } } return false; } this.getValues = function () { var values = new Array(); for (var prop in entry) { values.push(entry[prop]); } return values; } this.getKeys = function () { var keys = new Array(); for (var prop in entry) { keys.push(prop); } return keys; } this.getSize = function () { return size; } this.clear = function () { size = 0; entry = new Object(); } }

简单使用示例:

rush:js;"> var manHT = new HashTable(); manHT.add("p1","刘备"); manHT.add("p2","关羽"); $("#div1").text(manHT.getValue("p1"));

以上是本文的全部内容,希望对大家有所帮助!

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

相关推荐