Javascript實現HashTable(雜湊表)
阿新 • • 發佈:2019-02-09
1.雜湊表
ES6特性(詳細可看阮一峰)
Set 物件類似於陣列,且成員的值都是唯一的。
Map 物件是鍵值對集合,和 JSON 物件類似,但是 key 不僅可以是字串還可以是物件
其中Map中的鍵名也可以是物件這個特性極大的方便了開發,但是在ES6之前是沒有辦法的,只能模擬,但是很麻煩。
但是可以模擬一個hashTable來方便開發,其實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() | 清空雜湊表 | 無 |
2.程式碼實現
簡單示例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"));