Hãy thiết lập một class đơn giản để định nghĩa các phương thức. Chúng ta sẽ tạo một object container để lưu trữ Hash Table và tạo hàm display để hiển thị bảng. Lưu ý rằng để giải quyết va chạm, chúng ta sẽ dùng chaining.
Hàm display lấy từng entry (giá trị đã hash) trong bảng và in ra tất cả các cặp liên quan đến nó.
Ví dụ
Chúng ta cũng sẽ tạo một class mới trên prototype để lưu trữ các cặp khóa-giá trị.
class HashTable {
constructor() {
this.container = [];
// Khởi tạo container với các mảng rỗng
// có thể dùng để thêm phần tử trong
// trường hợp va chạm
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;
}
}
Chúng ta dùng một số tính năng nâng cao như destructuring trong phương thức display. Điều này giúp tránh code boilerplate.