复制代码代码如下:
function Hashtable()//自定义хэш-таблица
{
this._hash = новый объект();
this.add = функция (ключ, значение) {
if (typeof (key) != "не определено") {
if (this.contains(key) == false) {
this._hash[ключ] = typeof (значение) == "не определено" ? ноль: значение;
вернуть истину;
} еще {
вернуть ложь;
}
} еще {
вернуть ложь;
}
}
this.remove = function(key) { delete this._hash[key]; }
this.count = function() { var i = 0; for (var k in this._hash) { 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 = {};
это.Количество = 0;
//添加
this.Add = функция (ключ, значение) {
если (this.ObjArr.hasOwnProperty(ключ)) {
вернуть ложь; //如果键已经存在,不添加
}
еще {
this.ObjArr[ключ] = значение;
это.Count++;
вернуть истину;
}
}
// 是否包含某项
this.Contains = функция (ключ) {
верните this.ObjArr.hasOwnProperty(ключ);
}
//Добавить файл this.ObjArr[key]
this.GetValue = функция (ключ) {
если (this.Contains(ключ)) {
верните this.ObjArr[ключ];
}
еще {
throw Error("Хеш-таблица не содержит ключ: " + String(key)); // 脚本错误
//возвращаться;
}
}
//移除
this.Remove = функция (ключ) {
если (this.Contains(ключ)) {
удалить this.ObjArr[ключ];
this.Count--;
}
}
//清空
this.Clear = функция() {
this.ObjArr = {}; это.Количество = 0;
}
}
测试代码:
//员工
функция сотрудника (идентификатор, имя пользователя) {
this.id = идентификатор;
this.userName = имя пользователя;
}
функция тест() {
вар ht = новая HashTable();
вар tmpEmployee = ноль;
для (вар я = 1; я <6; я++) {
tmpEmployee = новый сотрудник (i, «Сотрудник_» + я);
ht.Add(я, tmpEmployee);
}
for (var я = 1; я <= ht.Count; я++) {
оповещение(ht.GetValue(i).userName); //其实等价于ht.ObjArr[i].userName
//оповещение(ht.ObjArr[i].userName);
}
ht.Remove(1);
оповещение(ht.Contains(1)); //ЛОЖЬ
оповещение(ht.Contains(2)); //истинный
//оповещение(ht.GetValue(1)); //异常
результат вар = ht.GetValue(2);
если (результат! = ноль) {
alert("Идентификатор сотрудника:" + result.id + ";Имя пользователя:" + result.userName);
}
ht.Add(2, "Нажмите клавишу 已经存在!"); //Добавить 无效
//ht.Очистить(); //清空
оповещение(ht.Count);
}