展会信息港展会大全

js模拟hashtable的简单实例介绍
来源:互联网   发布日期:2016-01-27 15:39:37   浏览:1438次  

导读:本篇文章主要是对js模拟hashtable的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助代码如下:function Hashtable() 自定义hashtable{ this _hash = new Object(); this add = f ...

本篇文章主要是对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);

}

赞助本站

人工智能实验室

相关热词: hashtable js

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港