Hashmap hay còn gọi là Hash Table là tập hợp các phần tử trong đó các phần tử được lưu trữ dưới dạng cặp khóa-giá trị. Không có sẵn cấu trúc dữ liệu được xác định trước cho hashmap được triển khai bằng ngôn ngữ lập trình JavaScript trước đây. Không giống như các ngôn ngữ lập trình khác như C++ hay Java, nơi cấu trúc dữ liệu này đã được triển khai. Do đó, mọi người thường tìm kiếm các lựa chọn thay thế khác nhau để triển khai hashmap và hầu hết thời gian, họ đã quen sử dụng các đối tượng vì chúng cũng có cấu trúc khóa-giá trị
Trong phiên bản JavaScript ES6, cộng đồng JavaScript giới thiệu một cấu trúc dữ liệu mới để triển khai hashmap được gọi là đối tượng Map
, là một cặp khóa-giá trị. Hãy xem cách triển khai hashmap bằng cách sử dụng đối tượng Map
và thực hiện các thao tác khác nhau như chèn, xóa và cập nhật bằng một số phương thức được xác định trước
Triển khai Hashmap bằng đối tượng Map
trong JavaScript
Đối tượng Map
, như chúng ta đã thấy, là một cặp khóa-giá trị. Ban đầu, Bản đồ sẽ trống; . Khóa trong hashmap sẽ thuộc loại chuỗi hoặc ký hiệu và giá trị của hashmap có thể thuộc bất kỳ loại nào
Để tạo một Map
, bạn có thể tạo một đối tượng của nó và lưu trữ nó bên trong một biến, trong trường hợp này là
const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
1. Bây giờ để chèn các cặp khóa-giá trị bên trong hashmap, JavaScript cung cấp một phương thức có tên là hashmap.forEach[element => {
document.write['
'+element];
}];
0. Phương thức này có hai tham số, tham số đầu tiên là khóa và tham số thứ hai là giá trị. Bên trong const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
1 mà chúng tôi đã tạo, chúng tôi sẽ chèn bốn phần tử, mỗi phần tử sẽ có một giá trị thuộc một loại khác nhau như số nguyên, mảng, chuỗi và toàn bộ hàm. Dưới đây là mã thể hiện điều tương tự Mảng là tuyệt vời để tìm kiếm các phần tử tại các chỉ mục cụ thể vì tất cả các phần tử trong bộ nhớ đều liền kề nhau, cho phép tra cứu theo thời gian liên tục hoặc
const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
3. Nhưng thường thì chúng ta không hoặc không thể thực hiện tra cứu thông qua các chỉ số. Bản đồ băm và bảng băm là một cách giải quyết vấn đề này, thay vào đó cho phép chúng tôi tra cứu qua const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
4Bạn có thể triển khai lớp Map
từ đầu không? . Nhiều ngôn ngữ lập trình có hàm băm hoặc từ điển nguyên thủy tích hợp sẵn [như ký hiệu
const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
2 const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
3 và const m = new Hashmap[];
m.set['name', 'Jake'];
console.log[m.get['name']];
4], nhưng chúng tôi không muốn sử dụng ký hiệu đó cho bài tập nàyBài học này ban đầu được xuất bản tại https. //algodaily. com, nơi tôi duy trì một khóa học phỏng vấn kỹ thuật và viết các ý tưởng cho các nhà phát triển đầy tham vọng
Cách đây một thời gian, tôi cần sử dụng hàm băm JavaScript. Một hashmap rất hữu ích vì nhiều lý do, nhưng lý do chính mà tôi cần một hashmap là để có thể tìm và sửa đổi một đối tượng, được lập chỉ mục bởi một chuỗi duy nhất mà không phải lặp qua một mảng các đối tượng đó mỗi lần
Nói cách khác, tôi cần tìm kiếm trong bộ sưu tập đối tượng của mình bằng một giá trị khóa duy nhất. Bộ sưu tập Key-Value tương tự như từ điển trong Python hoặc hashmaps/hashtables trong Java
Theo những gì tôi có thể nói, ngôn ngữ JavaScript tiêu chuẩn có cách triển khai hashmap khá đơn giản, nhưng “các khóa” chỉ có thể là các giá trị chuỗi. Có một số người giỏi ngoài kia đã triển khai các hàm băm JS phức tạp hơn. Nhưng chế độ chờ của ol đủ tốt cho tôi, vì vậy tôi đang sử dụng nó ở đây
Với tư cách là nhà phát triển Titanium, IS thường sử dụng “Để. API. log” để in ra bàn điều khiển. Nhưng vì chủ đề này áp dụng cho JavaScript nói chung, nên tôi sẽ sử dụng “bảng điều khiển. log” cho các báo cáo in. Đối với những nhà phát triển Titanium ngoài kia, cả hai lệnh gọi chức năng đều phù hợp với bạn. 🙂
Vì vậy, đây là 5 cách bạn có thể sử dụng hashmap JavaScript
5 – Tạo hashmap và thêm khóa
// Tạo hashmap
var animal = {};
. 'meo', tuổi. 8 };
animal[‘cat’] = { sound: ‘meow’, age:8 };
animal[‘dog’] = { sound. 'vỏ cây', tuổi tác. 10 };
animal[‘bird’] = { âm thanh. 'tweet', tuổi. 2 };
animal[‘cow’] = { sound. 'moo', tuổi. 5 };
4 – In tất cả các đối tượng trong hashmap
for [var x in animal]
{
bảng điều khiển. nhật ký ['Khóa. \n—- ‘ + x + ‘\n’];
bảng điều khiển. nhật ký ['Giá trị. '];
var value = animal[x];
for [var y in value]
{
console.log[‘—- ‘ + y + ‘:’ + value[y]];
}
bảng điều khiển. log[‘\n’];
}
Đây là mẫu đầu ra.
> Phím.
> —- con mèo
> Giá trị.
> —- âm thanh. meo meo
> —- tuổi. 8
>
> Phím.
> —- con chó
> Giá trị.
> —- âm thanh. sủa
> —- tuổi. 10
>
> Khóa.
> —- con chim
> Giá trị.
> —- âm thanh. tweet
> —- tuổi. 2
>
> Phím.
> —- con bò
> Giá trị.
> âm thanh. moo
> —- tuổi. 5
3 – Kiểm tra sự tồn tại của khóa và sửa đổi khóa
Nếu không có hashmap, bạn sẽ phải thực hiện việc này.
for [i = 0; i < numObjects; i++]
{
if [animal[i]. type == ‘cat’]
{
động vật[i]. sound = ‘hiss’;
}
}
Nhưng với một hashmap, bạn chỉ có thể làm điều này.
// kiểm tra sự tồn tại của khóa 'mèo'
if ['mèo' trong động vật]
{
// modify cat key here
animal[cat].sound = ‘hiss’;
}
// Ngọt nhỉ?
2 – Xóa khóa
// kiểm tra xem khóa đã tồn tại chưa
if ['mèo' trong động vật]
{
// then, delete it
delete animal[‘cat’];
}
1 – Đếm số khóa
Với hàm băm JS, bạn không thể chỉ làm điều này — động vật. chiều dài - để lấy số lượng khóa hoặc đối tượng trong hashmap của bạn. Thay vào đó, bạn sẽ cần thêm một vài dòng mã.
var count = 0;
for [x ở động vật]
{ count++; . log['Số con vật là. ‘ + đếm + ‘\n’];
console.log[‘The number of animals are: ‘ + count + ‘\n’];
Đây là mẫu đầu ra.
> Số lượng động vật là. 4
Bạn đã có nó, 5 cách để sử dụng hashmap JavaScript. Nếu bạn có các ví dụ về các cách sử dụng khác hoặc nếu bạn đã tự mình triển khai một hàm băm JS mà bạn muốn chia sẻ, vui lòng gửi liên kết tới mã của bạn trong các nhận xét bên dưới