js實現(xiàn)HashTable(哈希表)的實例分析
一、javascript哈希表簡介
javascript里面是沒有哈希表的,一直在java,C#中有時候用到了這一種數(shù)據(jù)結(jié)構(gòu),javascript里面若沒有,感覺非常不順手。細(xì)細(xì)看來,其實javascript的object的屬性其實與哈希表非常類似。
如:
var person = {};
person["name"] = "關(guān)羽";
我們只需要在其基礎(chǔ)上再封裝一些HashTable的函數(shù),就能夠得到一個精簡版的哈希表。
加入函數(shù)如下:
| 函數(shù)名 | 說明 | 返回值 |
| add(key,value) | 添加項 | 無 |
| getValue(key) | 根據(jù)key取值 | object |
| remove(key) | 根據(jù)key刪除一項 | 無 |
| containsKey(key) | 是否包含某個key | bool |
| containsValue(value) | 是否包含某個值 | bool |
| getValues() | 獲取所有的值的數(shù)組 | array |
| getKeys() | 獲取所有的key的數(shù)組 | array |
| getSize() | 獲取項總數(shù) | int |
| clear() | 清空哈希表 | 無 |
二、代碼實現(xiàn)
其具體的實現(xiàn)可以查看代碼,都不算很復(fù)雜的東西。
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","關(guān)羽");
$("#div1").text(manHT.getValue("p1"));
以上是本文的全部內(nèi)容,希望對大家有所幫助!
相關(guān)文章
小程序?qū)崿F(xiàn)自定義導(dǎo)航欄適配完美版
這篇文章主要介紹了小程序?qū)崿F(xiàn)自定義導(dǎo)航欄適配完美版,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
關(guān)于微信小程序獲取小程序碼并接受buffer流保存為圖片的方法
這篇文章主要介紹了關(guān)于微信小程序獲取小程序碼并接受buffer流保存為圖片的方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2019-06-06

