js实现HashTable(哈希表)的实例分析
作者:逆心
本文详细介绍javascript哈希表的实例分析及用法。下面就跟小编一起来学习下吧
一、javascript哈希表简介
javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascript里面若没有,感觉非常不顺手。细细看来,其实javascript的object的属性其实与哈希表非常类似。
如:
var person = {};
person["name"] = "关羽";
我们只需要在其基础上再封装一些HashTable的函数,就能够得到一个精简版的哈希表。
加入函数如下:
| 函数名 | 说明 | 返回值 | 
| add(key,value) | 添加项 | 无 | 
| getValue(key) | 根据key取值 | object | 
| remove(key) | 根据key删除一项 | 无 | 
| containsKey(key) | 是否包含某个key | bool | 
| containsValue(value) | 是否包含某个值 | bool | 
| getValues() | 获取所有的值的数组 | array | 
| getKeys() | 获取所有的key的数组 | array | 
| getSize() | 获取项总数 | int | 
| clear() | 清空哈希表 | 无 | 
二、代码实现
其具体的实现可以查看代码,都不算很复杂的东西。
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();
 }
}
简单使用示例:
var manHT = new HashTable();
manHT.add("p1","刘备");
manHT.add("p2","关羽");
$("#div1").text(manHT.getValue("p1"));
以上是本文的全部内容,希望对大家有所帮助!
