本篇文章主要是對js模擬hashtable的簡單實例進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
代碼如下: function Hashtable()//自定義hashtable { this._hash = new Object(); this.add = function(key, value) { if (typeof (key) != "undefined") { if (this.contains(key) == false) { this._hash[key] = typeof (value) == "undefined" ? null : value; return true; } else { return false; } } else { return false; } } this.remove = function(key) { delete this._hash[key]; } this.count = function() { var i = 0; for (var k in this._hash) { i++; } return i; } this.items = function(key) { return this._hash[key]; } this.contains = function(key) { return typeof (this._hash[key]) != "undefined"; } this.clear = function() { for (var k in this._hash) { delete this._hash[k]; } } } 代碼如下: // js哈希表 function HashTable() { this.ObjArr = {}; this.Count = 0; //添加 this.Add = function(key, value) { if (this.ObjArr.hasOwnProperty(key)) { return false; //如果鍵已經存在,不添加 } else { this.ObjArr[key] = value; this.Count++; return true; } } //是否包含某項 this.Contains = function(key) { return this.ObjArr.hasOwnProperty(key); } //取某一項 其實等價於this.ObjArr[key] this.GetValue = function(key) { if (this.Contains(key)) { return this.ObjArr[key]; } else { throw Error("Hashtable not cotains the key: " + String(key)); //腳本錯誤 //return; } } //移除 this.Remove = function(key) { if (this.Contains(key)) { delete this.ObjArr[key]; this.Count--; } } //清空 this.Clear = function() { this.ObjArr = {}; this.Count = 0; } } 測試代碼: //員工 function employee(id, userName) { this.id = id; this.userName = userName; } function test() { var ht = new HashTable(); var tmpEmployee = null; for (var i = 1; i < 6; i++) { tmpEmployee = new employee(i, "Employee_" + i); ht.Add(i, tmpEmployee); } for (var i = 1; i <= ht.Count; i++) { alert(ht.GetValue(i).userName); //其實等價於ht.ObjArr[i].userName //alert(ht.ObjArr[i].userName); } ht.Remove(1); alert(ht.Contains(1)); //false alert(ht.Contains(2)); //true //alert(ht.GetValue(1)); //異常 var result = ht.GetValue(2); if (result != null) { alert("Employee Id:" + result.id + ";UserName:" + result.userName); } ht.Add(2, "這一個key已經存在!"); //Add無效 //ht.Clear(); //清空 alert(ht.Count); }