复制番号代番号次のように:
function Hashtable()//自定ハッシュテーブル
{
this._hash = 新しいオブジェクト();
this.add = 関数(キー, 値) {
if (typeof (key) != "未定義") {
if (this.contains(key) == false) {
this._hash[キー] = typeof (値) == "未定義" ? null : 値;
true を返します。
} それ以外 {
false を返します。
}
} それ以外 {
false を返します。
}
}
this.remove = function(key) { this._hash[key] を削除します。 }
this.count = function() { var i = 0; for (this._hash の var k) { i++; i を返します。 }
this.items = function(key) { return this._hash[key]; }
this.contains = function(key) { return typeof (this._hash[key]) != "未定義"; }
this.clear = function() { for (this._hash の var k) { this._hash[k] を削除します。 } }
}
复制番号代番号次のように:
// js哈希表
関数 HashTable() {
this.ObjArr = {};
this.Count = 0;
//追加
this.Add = function(key, value) {
if (this.ObjArr.hasOwnProperty(key)) {
false を返します。 //如果键すでに存在,不添加
}
それ以外 {
this.ObjArr[キー] = 値;
this.Count++;
true を返します。
}
}
// 何かが含まれているかどうか
this.Contains = function(key) {
this.ObjArr.hasOwnProperty(key) を返します。
}
// ある一项 其实等价から this.ObjArr[key] を取得します
this.GetValue = 関数(キー) {
if (this.Contains(key)) {
this.ObjArr[キー]を返します;
}
それ以外 {
throw Error("ハッシュテーブルにキーが含まれていません: " + String(key)); // 脚本错误
//戻る;
}
}
//削除
this.Remove = function(key) {
if (this.Contains(key)) {
this.ObjArr[キー]を削除します。
this.Count--;
}
}
//清空
this.Clear = function() {
this.ObjArr = {}; this.Count = 0;
}
}
测试代:
//员工
関数従業員(id, ユーザー名) {
this.id = ID;
this.userName = ユーザー名;
}
関数テスト() {
var ht = 新しい HashTable();
var tmpEmployee = null;
for (var i = 1; i < 6; i++) {
tmpEmployee = 新しい従業員(i, "従業員_" + 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.削除(1);
アラート(ht.Contains(1)); //間違い
アラート(ht.Contains(2)); //真実
//アラート(ht.GetValue(1)); //异常
var result = ht.GetValue(2);
if (結果 != null) {
alert("従業員 ID:" + result.id + ";ユーザー名:" + result.userName);
}
ht.Add(2, "这一鍵已经存在!"); //無效を追加
//ht.Clear(); //清空
アラート(ht.Count);
}