复代码代码如下:
function Hashtable()//해시테이블 자체 정의
{
this._hash = 새로운 객체();
this.add = 함수(키, 값) {
if (typeof (key) != "정의되지 않음") {
if (this.contains(key) == false) {
this._hash[key] = typeof (값) == "정의되지 않음" ? null : 값;
사실을 반환;
} 또 다른 {
거짓을 반환;
}
} 또 다른 {
거짓을 반환;
}
}
this.remove = function(key) { 삭제 this._hash[key]; }
this.count = function() { var i = 0; for (var k in this._hash) { i++; } i를 반환합니다; }
this.items = function(key) { return this._hash[key]; }
this.contains = function(key) { return typeof (this._hash[key]) != "정의되지 않음"; }
this.clear = function() { for (var k in this._hash) { delete this._hash[k]; } }
}
复代码代码如下:
// js哈希表
함수 HashTable() {
this.ObjArr = {};
this.Count = 0;
//添加
this.Add = function(키, 값) {
if (this.ObjArr.hasOwnProperty(key)) {
거짓을 반환; //여기에 없습니다, 不添加
}
또 다른 {
this.ObjArr[키] = 값;
this.Count++;
사실을 반환;
}
}
//是否包含某项
this.Contains = function(key) {
return this.ObjArr.hasOwnProperty(key);
}
//取某一项 其实等价于this.ObjArr[키]
this.GetValue = 함수(키) {
if (this.Contains(key)) {
return this.ObjArr[키];
}
또 다른 {
throw Error("해시테이블에 키가 없습니다: " + String(key)); //脚本错误
//반품;
}
}
//移除
this.Remove = function(key) {
if (this.Contains(key)) {
this.ObjArr[키]를 삭제하세요.
this.count--;
}
}
//공공
this.Clear = 함수() {
this.ObjArr = {}; this.Count = 0;
}
}
测试代码:
//员工
함수 직원(ID, 사용자 이름) {
this.id = 아이디;
this.userName = 사용자이름;
}
함수 테스트() {
var ht = 새로운 HashTable();
var tmpEmployee = null;
for (var i = 1; i < 6; i++) {
tmpEmployee = 신규 직원(i, "Employee_" + i);
ht.Add(i, tmpEmployee);
}
for (var i = 1; i <= ht.Count; i++) {
경고(ht.GetValue(i).userName); //其实等价于ht.ObjArr[i].userName
//alert(ht.ObjArr[i].userName);
}
ht.Remove(1);
경고(ht.Contains(1)); //거짓
경고(ht.Contains(2)); //진실
//alert(ht.GetValue(1)); //异常
var 결과 = ht.GetValue(2);
if (결과 != null) {
Alert("직원 ID:" + result.id + ";UserName:" + result.userName);
}
ht.Add(2, "키를 입력했습니다!"); //Add无效
//ht.Clear(); //공공
경고(ht.Count);
}