Maps

Map یک نوع کالکشن در جاوااسکریپت هست که داده‌ها رو به صورت کلید → مقدار (key → value) ذخیره می‌کنه.
برخلاف آبجکت معمولی ({}):

  • در Map می‌تونی هر چیزی رو به عنوان کلید استفاده کنی (حتی object یا function).

  • ترتیب درج عناصر حفظ می‌شه.

  • متدهای کاربردی بیشتری داره.

🔹 ایجاد Map

// خالی const myMap = new Map(); // مقدار اولیه const map2 = new Map([ ["name", "Ali"], ["age", 25], ["isAdmin", true] ]); console.log(map2); // Map(3) { "name" => "Ali", "age" => 25, "isAdmin" => true }

🔹 متدهای اصلی Map

متدتوضیح
set(key, value)مقدار جدید اضافه می‌کنه یا مقدار قبلی رو به‌روزرسانی می‌کنه.
get(key)مقدار کلید مشخص رو برمی‌گردونه.
has(key)بررسی وجود کلید.
delete(key)حذف مقدار بر اساس کلید.
clear()پاک کردن همه‌ی داده‌ها.
sizeتعداد عناصر داخل Map.

🔸 مثال:

const user = new Map(); // اضافه کردن user.set("name", "Sara"); user.set("age", 30); console.log(user.get("name")); // "Sara" console.log(user.has("age")); // true console.log(user.size); // 2 user.delete("age"); console.log(user.has("age")); // false user.clear(); console.log(user.size); // 0

🔹 انواع کلید در Map

const m = new Map(); const objKey = { id: 1 }; const funcKey = function() {}; const strKey = "hello"; m.set(objKey, "object value"); m.set(funcKey, "function value"); m.set(strKey, "string value"); console.log(m.get(objKey)); // "object value" console.log(m.get(funcKey)); // "function value" console.log(m.get("hello")); // "string value"

📌 در آبجکت معمولی فقط string یا symbol می‌تونه کلید باشه، ولی در Map هر چیزی ممکنه.

🔹 پیمایش روی Map

for...of

const map = new Map([ ["a", 1], ["b", 2], ["c", 3] ]); for (let [key, value] of map) { console.log(key, "=>", value); }

forEach

map.forEach((value, key) => { console.log(key, ":", value); });

keys, values, entries

console.log([...map.keys()]); // ["a", "b", "c"] console.log([...map.values()]); // [1, 2, 3] console.log([...map.entries()]); // [["a",1], ["b",2], ["c",3]]

🎯 تمرین – مثال کامل

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript Map Example</title> </head> <body> <h2>JavaScript Map Example</h2> <pre id="output"></pre> <script> const output = document.getElementById("output"); const myMap = new Map(); // افزودن داده myMap.set("name", "Ali"); myMap.set("age", 25); myMap.set("isAdmin", true); output.innerText += "name: " + myMap.get("name") + "\n"; output.innerText += "has age? " + myMap.has("age") + "\n"; output.innerText += "size: " + myMap.size + "\n\n"; // پیمایش myMap.forEach((value, key) => { output.innerText += key + " => " + value + "\n"; }); // keys, values, entries output.innerText += "\nKeys: " + JSON.stringify([...myMap.keys()]) + "\n"; output.innerText += "Values: " + JSON.stringify([...myMap.values()]) + "\n"; output.innerText += "Entries: " + JSON.stringify([...myMap.entries()]) + "\n"; </script> </body> </html>

📌 جمع‌بندی

  • Map برای داده‌های کلید-مقدار عالیه.

  • کلیدها می‌تونن هر چیزی باشن (object, function, primitive).

  • متدهای اصلی: set, get, has, delete, clear, size.

  • برای پیمایش: for...of, forEach, keys(), values(), entries().