- Đăng ngày
JavaScript Hash Map: Các cặp khóa-giá trị hiệu suất cao
- Tác giả
- Tên
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Tại sao sử dụng Map?
Chúng ta đều biết rằng một ngôn ngữ lập trình khác có một thứ gọi là Hashtable. Đây là một cấu trúc dữ liệu lưu trữ các cặp khóa-giá trị, rất tuyệt vời bởi vì chúng có thời gian tra cứu O(1) không đổi. Đây là một cấu trúc dữ liệu có lợi mà chúng ta có thể sử dụng để lưu trữ dữ liệu. Trong JavaScript, chúng ta không có một cấu trúc dữ liệu tích hợp sẵn như Hashtable. Nhưng chúng ta có thể sử dụng một đối tượng để lưu trữ các cặp khóa-giá trị. Nó được gọi là Map trong JavaScript.
Map là gì?
Map là một bộ sưu tập các phần tử, trong đó mỗi phần tử được lưu trữ dưới dạng một cặp Khóa, Giá trị. Khóa và giá trị của Map có thể là bất kỳ giá trị nào (cả đối tượng và giá trị nguyên thủy). Một đối tượng Map lặp qua các phần tử của nó theo thứ tự chèn - một vòng lặp for...of trả về một mảng [key, value] cho mỗi lần lặp.
Map lưu trữ các cặp khóa-giá trị, trong đó khóa có thể là bất kỳ kiểu dữ liệu nào. Map có một thuộc tính thể hiện kích thước của Map. Map nhớ thứ tự chèn ban đầu của các khóa.
Các phương thức và thuộc tính của Map
Phương thức | Mô tả |
---|---|
new Map() | Tạo một đối tượng Map mới |
set() | Thiết lập giá trị cho một khóa trong Map |
get() | Trả về giá trị cho một khóa |
has() | Trả về một giá trị boolean cho biết liệu một khóa có tồn tại trong Map |
delete() | Xóa một khóa khỏi Map |
clear() | Xóa tất cả các khóa khỏi Map |
values() | Trả về một đối tượng lặp của các giá trị trong Map |
keys() | Trả về một đối tượng lặp của các khóa trong Map |
entries() | Trả về một đối tượng lặp của các cặp khóa-giá trị trong Map |
forEach() | Thực thi một hàm được cung cấp một lần cho mỗi cặp khóa-giá trị trong Map |
Thuộc tính | Mô tả |
---|---|
size | Trả về số lượng cặp khóa/giá trị trong Map |
Ví dụ về Map
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']
console.log(map.size) // 5
Lặp qua Map
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
// Lặp qua các khóa
for (const key of map.keys()) {
console.log(key)
}
// Lặp qua các giá trị
for (const value of map.values()) {
console.log(value)
}
// Lặp qua các cặp khóa-giá trị
for (const [key, value] of map.entries()) {
console.log(key, value)
}
// Lặp qua các cặp khóa-giá trị
map.forEach((value, key) => {
console.log(key, value)
})
Map so với Object
Map | Object |
---|---|
Map là một bộ sưu tập các mục dữ liệu được gán khóa, giống như Object. Nhưng sự khác biệt chính là Map cho phép khóa là bất kỳ kiểu nào. | Khóa của Object phải là chuỗi hoặc biểu tượng. |
Map có thể lặp qua và dễ dàng được lặp qua. | Object không thể lặp qua và không thể được lặp qua dễ dàng. |
Map có phương thức forEach tích hợp, vì vậy không cần phải chuyển đổi nó thành một mảng. | Object không có phương thức forEach tích hợp. |
Map có thuộc tính size, vì vậy chúng ta có thể dễ dàng lấy số lượng mục. | Object không có thuộc tính size. |
Map có thể sử dụng các đối tượng làm khóa. | Object không thể sử dụng các đối tượng làm khóa. |
Map thường nhanh hơn Object. | Object thường chậm hơn Map. |
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về Map trong JavaScript. Chúng ta đã tìm hiểu về các phương thức và thuộc tính của Map. Chúng ta cũng đã biết về sự khác biệt giữa Map và Object. Tôi hy vọng bạn đã thích bài viết này. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại bình luận bên dưới. Cảm ơn bạn đã đọc.
Bài viết gốc được đăng tại: https://blog.imam.dev/blog/javascript-hashmap
Tham khảo
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map