Posted in Javascript onMarch 06, 2014
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); }
js模拟hashtable的简单实例
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@