一、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"));
以上是本文的全部內容,希望對大家有所幫助!