یک نقشه در جاوااسکریپت مجموعه ای از مقادیر است که در قالب نوع داده آبجکت قرار می‌گیرند.

این دستور نیز یک مجموعه شبیه Set ایجاد می کند و تنها تفاوت آن با Set در این است که مقادیر بازگشتی در کنار مقداری که دارند دارای کلید نیز هستند.

از این روش ممکن است در پروژه ها کمتر استفاده شود اما یکی از مباحث اصلی جاوااسکریپت است.

این نوع داده دارای متدها و خصوصیاتی مخصوص است این که همگی را آموزش میدهیم.البته تعداد متدها بیشتر از نوع Set است.

 

نحوه تعریف یک مجموعه با Map

برای ایجاد Map در جاوااسکریپت با استفاده از دستور new می بایست از روی تابع سازنده Map یک آبجکت ایجاد نماییم.

مثال:

 

اضافه کردن آیتم جدید به Map با متد set

برخلاف دستور Set که می توان مستقیم و در قالب آرایه، مقادیر خود را به تابع Set ارسال کنیم. در نقشه برای اضافه کردن یک مقدار جدید باید از متد set استفاده نمائیم.

به همین منظور این متد دو مقدار key و value از شما دریافت می کند.

کلید در هر نقشه یونیک است و آیتم دیگر با هر مقداری نمی تواند کلید تکراری بگیرد.اما مقدار می تواند هر چیزی باشد.کلید هم می تواند عدد و هم رشته باشد.مقدار هم می تواند از هر نوعی باشد.

با متد set می توان مقدار قبلی کلید موردنظر را تغییر بدهید.

مثال:

روش دیگر اضافه کردن مقادیر در قالب آرایه دو بعدی به تابع سازنده Map است.

از آنجا که مقادیر در Map دارای کلید و مقدار هستند اضافه کردن مقادیر در قالب یک آرایه به Map موجب ایجاد خطا می شود.

برای رفع این مشکل آیتم های آرایه شما باید بصورت یک آرایه با دو آیتم کلید و مقدار باشد.

مثال:

در صورتی که کلید تکراری باشد آخرین مقدار و کلید ارسالی را در Map تنظیم می کند.

مثال:

 

متد get

با استفاده از این متد و ارسال کلید موردنظر می توانیم مقدار را بدست آوریم.

مثال:

 

متد delete

یک مقدار مشخص را از map شما حذف می کند.

مقدار بازگشتی آن یک مقدار بولین است.در صورتی که موفق به حذف شود مقدار true برگشت می دهد.

برای حذف باید نام کلید را درج کنیم.

مثال:

 

متد clear

با استفاده از این متد می توان کل اعضای یک مجموعه را پاک کنید.

مثال:

 

متد has

با استفاده از این متد می توان وجود یک مقدار در یک Map را بررسی کرد. در صورت وجود داشتن مقدار true برگشت می دهد.

مثال:

 

متد keys

از این متد درون Map استفاده میشود و آرایه ای iterator از کلید های آیتم ها را برگشت می‌دهد.

مثال:

 

متد values

از این متد درون Map استفاده میشود و آرایه ای iterator از مقادیر آیتم ها را برگشت می‌دهد.

مثال:

 

متد forEach

در Map شما با استفاده از متد forEach می توانید آیتم های خود را حلقه و پیمایش کنید. این حلقه بوسیله تابع بی نام که دارای آرگومان کلید و مقدار است انجام می‌شود.

مثال:

 

متد entries

با استفاده از این متد درون Map می توانیم یک آبجکت iterator که دارای کلید و مقدار است بازگشت دهیم و از آن در دستور for…of استفاده نماییم. در حالت عادی کلید و مقدار در خروجی با , از هم جدا میشوند.

مثال:

 

حلقه بر روی کلیدهای نقشه

برای حلقه بر روی کلیدهای یک نقشه می توان از دستور for…of استفاده کرد. در این نوع حلقه برای دریافت کلید از متد keys استفاده میکنیم.

مثال:

 

حلقه بر روی مقادیر نقشه

برای حلقه بر روی مقادیر یک نقشه می توان از دستور for…of استفاده کرد. در این نوع حلقه برای دریافت مقدار از متد values استفاده می‌کنیم.

مثال:

 

حلقه بر روی کلید و مقدار در نقشه

در صورتی که بخواهیم بر روی آیتم های نقشه حلقه ایجاد کنیم علاوه بر دستور for…of باید از متد entries استفاده کنیم. این متد یک iterator که دارای کلید و مقدار است برگشت می دهد. در این روش برای جداسازی کلید و مقدار می توانیم از روش [destructing] استفاده کنیم.

مثال:

 

خصوصیت size

یک مقدار عددی که بیانگر تعداد آیتم های موجود درون نقشه Map است.

مثال:

 

تفاوت Map با آبجکت

  • از لحاظ iterable بودن: آبجکت مستقیما iterable نیست اما Map دارای iterable مستقیم درونی است.
  • از لحاظ خصوصیت size: دستور Map دارای خصوصیت size است اما آبجکت اندازه آیتم برگشت نمی‌دهد.
  • از لحاظ کلید: در دستور map نوع کلیدش حتما باید رشته یا symbol باشد در صورتی که آبجکت کلیدش می تواند از هر نوع داده ای باشد.
  • چیدمان کلید: در آبجکت کلیدها به خوبی چیدمان نشده اند اما در Map کلیدها سفارشی و مرتب است.
  • از لحاظ پیش فرض بودن: آبجکت دارای کلید پیش فرض است اما Map نیست.

 

ترفندهای کار کردن با Set و Map

شما می توانید هر مقداری که دارای iterator درونی هستند چه Map چه Set چه String و … از عملگر spread (…) استفاده نمائید.

مثال:

روش دیگر تبدیل هر نوع آبجکتی که قابلیت iterable شدن به آرایه را دارند، استفاده از متد from از طریق تابع سازنده Array است.

مثال:

 

حذف عناصر تکراری از یک آرایه با روش سریع

برای اینکار آرایه خود را که دارای مجموعه از مقادیر مختلف است را درون تابع Set ارسال میکنیم. تیم دستور عناصر تکراری سال را حذف میکند اما مقدار بازگشتی یک ابجکت از نوع set برگشت می‌دهد.

سپس مقدار بدست آمده را به متد from ارسال میکنیم تا به آرایه تبدیل شود.

مثال:

دیدگاه خود را بیان کنید

این ایمیل برای عموم منتشر نمی شود