79- آموزش جاوااسکریپت | آشنایی با Maps در جاوااسکریپت (ES6)
در این آموزش با ساختار داده Map در جاوااسکریپت (ES6) آشنا میشویم؛ ساختاری که به ما اجازه میدهد جفتهای کلید-مقدار را با امکان استفاده از هر نوع دادهای بهعنوان کلید، ذخیره کنیم.
در جاوااسکریپت مدرن (ES6)، ساختار داده جدیدی به نام Map معرفی شده است. Map شیئی است که جفتهای کلید-مقدار (Key-Value Pairs) را در خود نگه میدارد.
بزرگترین تفاوت Map با آبجکتهای معمولی (Object Literals) در این است که در آبجکتها کلیدها حتماً باید رشته یا سمبل باشند، اما در Map میتوانید از هر نوع دادهای (شامل رشته، عدد، شیء، تابع و...) بهعنوان کلید استفاده کنید.
ساخت یک Map
برای ایجاد یک Map جدید از کلمه کلیدی new و سازنده Map استفاده میکنیم:
const map1 = new Map();
حالا فرض کنید میخواهیم چند کلید با نوعهای دادهای مختلف تعریف کنیم:
const key1 = 'some string';
const key2 = {}; // یک آبجکت خالی
const key3 = function() {}; // یک تابع خالی
مقداردهی به Map
برای اضافه کردن جفت کلید-مقدار به Map، از متد set() استفاده میکنیم:
map1.set(key1, 'value of key one');
map1.set(key2, 'value of key two');
map1.set(key3, 'value of key three');
خواندن مقادیر از Map
برای دریافت مقادیر ذخیرهشده بر اساس کلید آنها، از متد get() استفاده میکنیم:
console.log(map1.get(key1)); // value of key one
console.log(map1.get(key2)); // value of key two
console.log(map1.get(key3)); // value of key three
به دست آوردن تعداد اعضا
برای شمارش جفتهای کلید-مقدار موجود در Map، از ویژگی size استفاده میکنیم:
console.log(map1.size); // 3
پیمایش (Iteration) در Map
روشهای مختلفی برای حرکت روی اعضای یک Map وجود دارد.
۱. استفاده از حلقه for...of برای دریافت کلید و مقدار
for (let [key, value] of map1) {
console.log(`${key} = ${value}`);
}
۲. پیمایش فقط روی کلیدها
با استفاده از متد keys() میتوانیم فقط روی کلیدها حرکت کنیم:
for (let key of map1.keys()) {
console.log(key);
}
۳. پیمایش فقط روی مقدارها
با استفاده از متد values() میتوانیم فقط روی مقدارها حرکت کنیم:
for (let value of map1.values()) {
console.log(value);
}
۴. استفاده از متد forEach
متد forEach نیز روی Mapها در دسترس است:
map1.forEach((value, key) => {
console.log(`${key} = ${value}`);
});
تبدیل Map به آرایه (Array)
گاهی نیاز داریم اطلاعات موجود در یک Map را به آرایه معمولی تبدیل کنیم. برای این کار از Array.from() استفاده میکنیم.
تبدیل جفتهای کلید-مقدار به آرایه
const keyValArr = Array.from(map1);
console.log(keyValArr);
// خروجی: آرایهای دو بعدی حاوی جفتهای کلید و مقدار
تبدیل فقط مقادیر به آرایه
const valArr = Array.from(map1.values());
console.log(valArr);
// ["value of key one", "value of key two", "value of key three"]
تبدیل فقط کلیدها به آرایه
const keyArr = Array.from(map1.keys());
console.log(keyArr);
// ["some string", {}, function]
جمعبندی
ساختار داده Map در جاوااسکریپت ابزاری بسیار قدرتمند و منعطف است که محدودیتهای کلید در آبجکتهای معمولی را از بین میبرد. امکان استفاده از توابع و آبجکتها بهعنوان کلید، بررسی ساده تعداد اعضا با size و متدهای پیمایش پیشفرض، کار با جفتهای کلید-مقدار را در توسعه وب بسیار سادهتر کرده است.