- منتشر شده در
نقشههای هش در جاوا اسکریپت: جفتهای کلید-مقدار با کارایی بالا
- نویسندگان
- نام
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
چرا از Map استفاده کنیم؟
خب، همه ما میدانیم که زبانهای برنامهنویسی دیگری چیزی به نام Hashtable دارند. این یک ساختار داده است که جفتهای کلید-مقدار را ذخیره میکند و به دلیل جستجوی زمان ثابت O(1) بسیار عالی است. این یک ساختار داده مفید است که میتوانیم از آن برای ذخیره دادهها استفاده کنیم. در جاوا اسکریپت، ساختار دادهای داخلی مانند Hashtable نداریم. اما میتوانیم از یک شی برای ذخیره جفتهای کلید-مقدار استفاده کنیم. این در جاوا اسکریپت به عنوان Map شناخته میشود.
Map چیست؟
Map مجموعه ای از عناصر است که هر عنصر به عنوان جفت کلید-مقدار ذخیره میشود. کلیدها و مقادیر یک Map میتوانند هر نوعی باشند (هم اشیاء و هم مقادیر اولیه). یک شی Map عناصر خود را به ترتیب درج تکرار میکند - یک حلقه for...of در هر تکرار یک آرایه [key, value] برمیگرداند.
یک Map جفتهای کلید-مقدار را نگه میدارد که کلیدها میتوانند از هر نوع دادهای باشند. یک Map خاصیتی دارد که اندازه Map را نشان میدهد. یک Map ترتیب درج اصلی کلیدها را به خاطر میسپارد.
روشها و خاصیتهای Map
روش | توضیحات |
---|---|
new Map() | ایجاد یک شی Map جدید |
set() | تنظیم مقدار برای یک کلید در Map |
get() | بازگرداندن مقدار برای یک کلید |
has() | بازگرداندن یک مقدار boolean که نشان میدهد یک کلید در Map وجود دارد یا خیر |
delete() | حذف یک کلید از Map |
clear() | حذف همه کلیدها از Map |
values() | بازگرداندن یک شی تکرارگر از مقادیر موجود در Map |
keys() | بازگرداندن یک شی تکرارگر از کلیدهای موجود در Map |
entries() | بازگرداندن یک شی تکرارگر از جفتهای کلید-مقدار موجود در Map |
forEach() | اجرای یک تابع ارائه شده برای هر جفت کلید-مقدار در Map |
خاصیت | توضیحات |
---|---|
size | بازگرداندن تعداد جفتهای کلید-مقدار در Map |
مثال 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
تکرار 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'])
// تکرار کلیدها
for (const key of map.keys()) {
console.log(key)
}
// تکرار مقادیر
for (const value of map.values()) {
console.log(value)
}
// تکرار جفتهای کلید-مقدار
for (const [key, value] of map.entries()) {
console.log(key, value)
}
// تکرار جفتهای کلید-مقدار
map.forEach((value, key) => {
console.log(key, value)
})
مقایسه Map و Object
Map | Object |
---|---|
Map مجموعه ای از آیتمهای داده کلید دار است، درست مانند Object. اما تفاوت اصلی این است که Map به کلیدهای از هر نوعی اجازه میدهد. | کلیدهای Object باید یا رشته یا سمبل باشند. |
Map قابل تکرار است و به راحتی میتوان روی آن حلقه زد. | Object قابل تکرار نیست و به راحتی نمیتوان روی آن حلقه زد. |
Map دارای یک روش forEach داخلی است، بنابراین نیازی به تبدیل آن به آرایه نیست. | Object روش forEach داخلی ندارد. |
Map دارای یک خاصیت size است، بنابراین به راحتی میتوان تعداد آیتمها را بدست آورد. | Object خاصیت size ندارد. |
Map میتواند از اشیاء به عنوان کلید استفاده کند. | Object نمیتواند از اشیاء به عنوان کلید استفاده کند. |
Map در حالت کلی از Object سریعتر است. | Object در حالت کلی کندتر از Map است. |
نتیجهگیری
در این مقاله، ما در مورد Map در جاوا اسکریپت یاد گرفتیم. ما در مورد روشها و خواص Map یاد گرفتیم. ما همچنین در مورد تفاوت بین Map و Object شناختیم. امیدوارم از این مقاله لذت برده باشید. اگر سؤالی دارید، لطفاً نظر خود را در زیر بنویسید. با تشکر از شما برای خواندن.
در اصل منتشر شده در: https://blog.imam.dev/blog/javascript-hashmap
منابع
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map