javascriptMap and Setمجموعههای Map و Set در جاوااسکریپت
Map و Set در جاوااسکریپت را با شناسههای یکتا و موجودی کالا بشناسید؛ تفاوت مجموعه با آرایه، کلیدـمقدار و تفاوت Map با متد map را ببینید.
مفهوم به زبان ساده
برای یکتایی مقدارها یا رابطهٔ کلید و مقدار، Map و Set میتوانند ساختار مناسبتری از آرایه باشند. Set هر مقدار متمایز را یک بار نگه میدارد. Map برای هر کلید، یک مقدار دارد و با set، get و has میتوان آن را بهروزرسانی یا بررسی کرد. این دو ابزار با متد map آرایه که برای تبدیل اعضا به آرایهٔ تازه است، متفاوتاند.
در نمونه، موضوع JS دوبار وارد Set میشود، اما اندازهٔ مجموعه دو باقی میماند. با گسترش مجموعه در آرایه، میتوان عنوانها را برای نمایش کنار هم گذاشت. سپس Map موجودی یک کالا را نگه میدارد. ثبت دوبارهٔ کلید book مقدار آن را جایگزین میکند؛ کلید تکراری تازهای ساخته نمیشود. has نبود کلید را با false نشان میدهد.
Set و Map ترتیب درج را برای پیمایش حفظ میکنند، ولی مرتبسازی عددی یا الفبایی خودکار انجام نمیدهند. دو شیء جدا با فیلدهای مشابه، از نظر کلید یا عضو به یک شیء واحد تبدیل نمیشوند؛ هویت مرجع اهمیت دارد. اگر یکتایی شناسه را میخواهید، خود شناسه را در مجموعه بگذارید. برای تمرین، یک کلید تازه به Map اضافه کنید و پیش از اجرا، تغییر size و مقدار get را پیشبینی کنید.
کجا به کار میآید؟
- ساخت فهرست مقدارهای یکتا برای فیلتر یا انتخاب
- نگهداری موجودی یا تنظیمات با کلیدهای مشخص
از تعریف تا یک مثال واقعی
const topics = new Set(['JS', 'DOM', 'JS']);
console.log(topics.size);
console.log([...topics].join(', '));
const stock = new Map([['book', 2]]);
stock.set('book', 3);
console.log(stock.get('book'));
console.log(stock.has('pen'));
console.log(stock.size);
2 JS, DOM 3 false 1
این مثال چطور کار میکند؟
Set تکرار JS را به عضو تازه تبدیل نمیکند و size برابر ۲ است.
گسترش مجموعه، آرایهٔ قابل نمایش میسازد.
set روی کلید book مقدار موجود را عوض میکند و size نقشه همان ۱ میماند.
اشتباه رایج
Map سازندهٔ مجموعه است؛ array.map روش تبدیل آرایه است. همچنین Set اشیای جدا با محتوای مشابه را بر اساس فیلدها یکی نمیکند.
این را به خاطر بسپارید
برای یکتایی مقدارها Set و برای رابطهٔ کلیدـمقدار Map را بررسی کنید؛ ابزار را از روی مسئله انتخاب کنید.