在Javascript中实现伪哈希表
2010-09-14 13:41:46 来源:WEB开发网1 function Hashtable()
2 {
3 this._hash = {};
4 this._count = 0;
5 this.add = function(key, value)
6 {
7 if (this._hash.hasOwnProperty(key)) return false;
8 else { this._hash[key] = value; this._count++; return true; }
9 }
10 this.remove = function(key) { delete this._hash[key]; this._count--; }
11 this.count = function() { return this._count; }
12 this.items = function(key) { if (this.contains(key)) return this._hash[key]; }
13 this.contains = function(key) { return this._hash.hasOwnProperty(key); }
14 this.clear = function() { this._hash = {}; this._count = 0; }
15 }
实现起来很简单,我们在function中定义了一个_hash对象,该对象有一个属性key,我们可以给这个属性赋值,hasOwnProperty方法是javascript提供的方法,用于返回指定的对象中是否包含某个属性。同时我们在该function中还定义了一个_count对象,用于记录Hashtable中的数据个数,因为我们不想每次获取Hashtable中的数据个数时都要通过一个内置的循环来计数,这样开销就会小一些,前面说了,哈希算法的一个基本特性就是效率高。delete语句在javascript中用于销毁一个对象。
下面是使用该Hashtable的一些例子:
1 var hashCompany = new Hashtable();
2
3 //向Hashtable中添加键值对
4 function FillData(arr) {
5 hashCompany.clear();
6
7 for (var i = 0; i < arr.length - 1; i++) {
8 if (arr[i] != "") {
9 t = arr[i].split("`");
10 if (t.length > 2) {
11 if (!hashCompany.contains(t[0].trim())) {
12 hashCompany.add(t[0].trim(), t[1]);
13 }
14 }
15 }
16 }
17 }
18
19 //遍历Hashtable并取出值
20 function GetDataFromHash() {
21 var s;
22 if (hashCompany.count > 0) {
23 for (var i in hashCompany._hash) {
24 s += i + "|";
25 }
26 }
27
28 if (s.length > 0) {
29 s = s.substring(0, s.length - 2);
30 }
31
32 return s;
33 }
代码比较简单,这里就不再多加说明了,其中用到了一个trim函数,下面补上。
//采用正则表达式去除字符串两端的空格,匿名函数用于扩展String对象的方法
String.prototype.trim = function() { return this.replace(/(^s*)|(s*$)/g, ""); }
哈希表在代码中使用频率很高,灵活使用哈希表可以简化代码并提供诸多方便,尤其是在存储类似于数组的数据并且希望之后能够方便检索。将代码保存于此,以备日后使用。
Tags:Javascript 实现 哈希
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接