มาสร้างคลาสง่ายๆ ที่เราจะใช้สร้างเมธอดต่างๆ เราจะสร้าง container object เพื่อเก็บ hash table และสร้างฟังก์ชัน display เพื่อแสดงตาราง สำหรับการจัดการ collision เราจะใช้ chaining
ฟังก์ชัน display จะนำแต่ละ entry (ค่าที่ hash แล้ว) ในตารางมาแสดงคู่ข้อมูลทั้งหมดที่เกี่ยวข้อง
ตัวอย่างโค้ด
เราจะสร้างคลาสใหม่บน prototype เพื่อเก็บคู่คีย์-ค่า:
class HashTable {
constructor() {
this.container = [];
// เติม container ด้วย array ว่างๆ
// ซึ่งใช้เพิ่ม element เพิ่มเติมในกรณี collision
for(let i=0; i < 11; i++) {
this.container.push([]);
}
display() {
this.container.forEach((value, index) => {
let chain = value
.map(({ key, value }) => `{ ${key}: ${value} }`)
.join(" --> ");
console.log(`${index}: ${chain}`);
});
}
hash(key) {
return key % 11;
}
}
}
HashTable.prototype.KVPair = class {
constructor(key, value) {
this.key = key;
this.value = value;
}
}
เราใช้ฟีเจอร์ขั้นสูงอย่าง destructuring ในเมธอด display ช่วยลดโค้ด boilerplate