复制代码代码如下:
fungsi Hashtable()//memiliki hashtable
{
this._hash = Objek baru();
ini.tambahkan = fungsi(kunci, nilai) {
if (typeof (kunci) != "tidak terdefinisi") {
if (ini.berisi(kunci) == false) {
this._hash[key] = typeof (nilai) == "tidak terdefinisi" ? batal : nilai;
kembali benar;
} kalau tidak {
kembali salah;
}
} kalau tidak {
kembali salah;
}
}
this.remove = function(key) { hapus this._hash[key]; }
ini.hitungan = fungsi() { var i = 0; untuk (var k di ini._hash) { i++; } kembalikan saya; }
this.items = function(key) { kembalikan this._hash[key]; }
this.contains = function(key) { return typeof (this._hash[key]) != "tidak terdefinisi"; }
this.clear = function() { for (var k in this._hash) { hapus this._hash[k]; } }
}
复制代码代码如下:
// js哈希表
fungsi Tabel Hash() {
ini.ObjArr = {};
ini.Hitungan = 0;
//添加
ini.Tambahkan = fungsi(kunci, nilai) {
if (ini.ObjArr.hasOwnProperty(kunci)) {
kembali salah; //如果键已经存在,不添加
}
kalau tidak {
this.ObjArr[kunci] = nilai;
ini.Hitung++;
kembali benar;
}
}
//是否包含某项
ini.Berisi = fungsi(kunci) {
kembalikan ini.ObjArr.hasOwnProperty(kunci);
}
//取某一项 其实等价于ini.ObjArr[kunci]
ini.GetValue = fungsi(kunci) {
if (ini.Berisi(kunci)) {
kembalikan ini.ObjArr[kunci];
}
kalau tidak {
throw Error("Hashtable tidak berisi kunci: " + String(kunci)); //脚本错误
//kembali;
}
}
//移除
ini.Hapus = fungsi(kunci) {
if (ini.Berisi(kunci)) {
hapus ini.ObjArr[kunci];
ini.Hitungan--;
}
}
//清空
ini.Hapus = fungsi() {
ini.ObjArr = {}; ini.Hitungan = 0;
}
}
arti:
//员工
fungsi karyawan(id, nama pengguna) {
ini.id = id;
this.namapengguna = Namapengguna;
}
tes fungsi() {
var ht = HashTable baru();
var tmpEmployee = null;
untuk (var saya = 1; saya < 6; saya++) {
tmpEmployee = karyawan baru(i, "Karyawan_" + i);
ht.Tambahkan(i, tmpEmployee);
}
for (var i = 1; i <= ht.Hitungan; i++) {
peringatan(ht.GetValue(i).namapengguna); //其实等价于ht.ObjArr[i].userName
//peringatan(ht.ObjArr[i].namapengguna);
}
ht.Hapus(1);
peringatan(ht.Berisi(1)); //PALSU
peringatan(ht.Berisi(2)); //BENAR
//peringatan(ht.GetValue(1)); //异常
var hasil = ht.GetValue(2);
jika (hasil != nol) {
alert("Id Pegawai :"+hasil.id + ";NamaPengguna:"+hasil.namapengguna);
}
ht.Add(2, "这一个kunci已经存在!"); //Tambahkan无效
//ht.Hapus(); //清空
peringatan(ht.Hitungan);
}