js模拟hashtable的简单实例
js模拟hashtable的简单实例
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:functionHashtable()//自定义hashtable{this._hash=newObject();this...

复制代码 代码如下:

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);

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类