Bảng băm là một triển khai của một mảng kết hợp, một danh sách các cặp khóa-giá trị cho phép bạn truy xuất một giá trị thông qua một khóa. Bên trong, bảng băm sử dụng hàm băm để chuyển đổi giá trị khóa thành chỉ mục trỏ đến nơi lưu trữ giá trị trong bộ nhớ. Bảng băm có các thao tác tìm kiếm, chèn và xóa nhanh
Có hai cách chính để triển khai bảng băm/mảng kết hợp trong JavaScript
Sử dụng kiểu dữ liệu đối tượng
Cách triển khai đơn giản nhất là sử dụng kiểu dữ liệu
2. Điều này là do tất cả các đối tượng không vô hướng trong JavaScript hoạt động như các mảng kết hợp, ánh xạ từ khóa thuộc tính sang giá trị. Vì vậy, bản thân mộtkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
2 có thể hoạt động như một bảng băm cơ bảnkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
var simplehash = new Object[];
simplehash['key1'] = 'value1';
simplehash['key2'] = 'value2';
simplehash['key3'] = 'value3';
if [simplehash.hasOwnProperty[key]] {
console.log['key is: ' + key + ', value is: ' + simplehash[key]];
Đầu ra sẽ giống như
key is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
Có một số nhược điểm của phương pháp này
2 đi kèm với các thuộc tính riêng của nó có thể xung đột với các tên khóa tiềm năngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
- Không có cách nào dễ dàng để lấy kích thước của Bảng băm được lưu trữ trong
2, vì vậy nó phải được theo dõi thủ côngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
- Vì chúng cũng là tên thuộc tính, các khóa được sử dụng được giới hạn ở các loại
6 hoặckey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
7key is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
2 không được tối ưu hóa để thường xuyên thêm và xóa các cặp khóa-giá trịkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
Đối tượng
0 được tạo để triển khai loại mảng kết hợp này mà không có một số nhược điểm của việc sử dụng mộtkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
2 cơ bảnkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
- Không có chìa khóa tồn tại trước có thể dẫn đến va chạm
- Đối tượng
0 có thuộc tínhkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
3 để theo dõi nội dung của nókey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
- Một đối tượng
0 có thể có các khóa là bất kỳ loại dữ liệu nàokey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
- Một
0 đã được tối ưu hóa để lặp lại việc thêm và chèn các cặp khóa-giá trịkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
Một đối tượng
0 cũng đi kèm với các phương thức saukey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
7 Xóa tất cả các cặp khóa-giá trị khỏi đối tượngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
0key is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
9 Xóa cặp khóa-giá trị và trả vềkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
10 nếu khóa tồn tại. Trả vềkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
11 nếu khôngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
12 Trả về giá trị được liên kết với khóa hoặckey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
13 nếu khóa không tồn tạikey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
14 Trả vềkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
10 nếu khóa tồn tại, ngược lại làkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
11key is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
17 Đặt giá trị cho khóa trong đối tượngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
0 và trả về đối tượngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
0key is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
Ghi chú. Các cặp khóa-giá trị phải được đặt bằng phương pháp
20 để đối tượngkey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
0 hoạt động như mong đợi. Việc sử dụng cú pháp chokey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
2 ở trên sẽ có vẻ hiệu quả, nhưng sẽ không liên kết cặp khóa-giá trị với bộ sưu tập nội bộ của nókey is: key1, value is: value1
key is: key2, value is: value2
key is: key3, value is: value3
Băm có giống như các đối tượng không?
Chúng tôi thường so sánh hàm băm trong Ruby với Đối tượng trong JavaScript. Mặc dù chúng có một số điểm tương đồng nhưng chức năng của cả hai không giống nhau . Điểm giống nhau xuất phát từ thực tế là hàm băm của Ruby và đối tượng của JavaScript có vẻ giống nhau.Các đối tượng JavaScript có phải là bản đồ băm không?
Mặc dù JavaScript không có lớp Hashtable riêng, nhưng nó có các Đối tượng và Hashmap[Bản đồ] gốc cung cấp chức năng tương tự khi nó .Băm trong JavaScript là gì?
Hàm băm trong Javascript là bất kỳ hàm nào nhận đầu vào dưới dạng dữ liệu có kích thước tùy ý và tạo ra đầu ra dưới dạng dữ liệu có kích thước cố định . Thông thường, giá trị trả về của hàm băm được gọi là mã băm, hàm băm hay giá trị băm.Băm của một đối tượng là gì?
Đối tượng băm là một “bảng/tập dữ liệu” đã được lập chỉ mục khóa để truy cập và truy xuất nhanh hơn . Chỉ mục cho phép truy cập trực tiếp; . Trong trường hợp các khóa trùng lặp, đối tượng băm được xây dựng bằng cách sử dụng lần xuất hiện tuần tự đầu tiên của khóa trùng lặp.