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