یک مجموعه در جاوااسکریپت مجموعه ای از مقادیر یونیک است که در قالب نوع داده آبجکت قرار میگیرند.
از این روش ممکن است در پروژه ها کمتر استفاده شود اما یکی از مباحث اصلی جاوااسکریپت است.
در یک مجموعه یک مقدار، یکبار قابلیت تعریف شدن دارند و می تواند مقدار از هر نوعی باشد.
این نوع داده دارای متدها و خصوصیاتی مخصوص است این که همگی را آموزش میدهیم.
نحوه تعریف یک مجموعه با Set
برای ایجاد مجموعه در جاوااسکریپت با استفاده از دستور New می بایست از روی تابع سازنده Set یک آبجکت ایجاد نماییم.
مثال:
1 |
new Set(); |
نحوه اضافه کردن مقدار به مجموعه Set
برای اضافه کردن مقدار سه راهکار وجود دارد:
اضافه کردن مقدار با ارسال آرایه مستقیم بهمراه مقادیر درون تابع سازنده
مثال:
1 |
let setObj = new Set(["val1", "val2", 3]); |
اضافه کردن مقدار با استفاده از متد add
یکی از متدهای set جهت اضافه کردن مقدار متد add است. این دستور یک مقدار جهت تنظیم درون set از شما دریافت می کند.
مثال:
1 2 3 4 |
let setObj = new Set(["val1", "val2", 3]); setObj.add(4); console.log(setObj); //Set(4) {'val1', 'val2', 3, 4} |
1 2 3 4 5 6 |
const letters = new Set(); letters.add("a"); letters.add("b"); letters.add("c"); console.log(letters); //Set(3) {'a', 'b', 'c'} |
اضافه کردن مقدار بوسیله متغیر با استفاده از متد add
شما می توانید به مجموعه خود مقدار در قالب متغیر تخصیص بدهید.
مثال:
1 2 3 4 5 6 7 8 9 10 11 |
const letters = new Set(); const a = "a"; const b = "b"; const c = "c"; letters.add(a); letters.add(b); letters.add(c); console.log(letters); //Set(3) {'a', 'b', 'c'} |
نکته: در صورتی که مقدار رشته را مستقیما وارد new set کنیم و از آرایه استفاده نکنیم،تک تک کاراکترهای رشته تبدیل به یک کاراکتر میشود و کاراکترهای تکراری حذف میشود.
مثال:
1 2 3 |
const letters = new Set("javanmir"); console.log(letters); //Set(7) {'j', 'a', 'v', 'n', 'm', 'i', 'r'} |
مقدار بازگشتی دستور new Set یک آبجکت است که تنها دارای یک مقدار خصوصیت size می باشد که تعداد آیتم های درون آبجکت را برگشت می دهد.
در مقدار برگشت داده شده یک لیست برگشت می دهد که هر آییتم دارای شماره از ۰ به بعد است.درون هر آیتم خصوصیتی به نام value قرار دارد که مقدارش برابر با مقدار تخصیص داده شده به مجموعه set است.
مثال:
1 2 3 4 5 |
Set(3) {'d', 'e', Array(1)} /* 0: "d" value: "d" */ |
متد add
با استفاده از این متد میتوان به مجموعه خود مقدار جدید را اضافه کرد. این قابلیت وجود دارد که چندین بار متد را پشت سر هم فراخوانی کنید.
مقادیر تکراری حذف میشوند.
مقدار می تواند از هر نوعی باشد.
مثال:
1 2 3 4 5 |
const letters = new Set(); letters.add("d"); letters.add("e"); letters.add(["amir javanmir"]); //Set(3) {'d', 'e', Array(1)} |
یا
1 2 |
letters.add("d").add("e"); //Set(3) {'d', 'e', Array(1)} |
متد foreach جهت حلقه آیتم ها
در صورتی که بخواهید مقادیر یک مجموعه را پیمایش کنید از متد foreach استفاده کنید.
این متد دارای تابع بی نام با یک آرگومان برای گرفتن مقدار مجموعه در هر بار پیمایش است.
مثال:
1 2 3 4 5 6 |
const letters = new Set(["a","b","c"]); let text = ""; letters.forEach (function(value) { text += value; }) //abc |
روش دیگر پیمایش مقادیر یک مجموعه استفاده از دستور for…of است.
مثال:
1 2 3 4 5 6 7 8 9 |
const letters = new Set(["a","b","c"]); for(let x of letters ){ console.log(x); } /* a b c */ |
متد values
با استفاده از این متد می توان یک آبجکت iterator حاوی مقادیر مجموعه برگشت داد.
جالب توجه است که iterator این مجموعه بر روی تابع values تنظیم شده است.
با استفاده از این تابع می توان از حلقه for…of برای پیمایش آن استفاده کرد.
مثال:
1 2 3 |
const letters = new Set(["a","b","c"]); letters.values(); //SetIterator {'a', 'b', 'c'} |
متد delete
یک مقدار مشخص را از مجموعه شما حذف می کند.
مقدار بازگشتی آن یک مقدار بولین است.در صورتی که موفق به حذف شود مقدار true برگشت می دهد.
مثال:
1 2 3 4 5 6 7 |
const letters = new Set(["a","b","c"]); letters.delete("a"); /* true letters Set(2) {'b', 'c'} */ |
متد has
با استفاده از این متد می توان وجود یک مقدار در یک مجموعه را بررسی کرد. در صورت وجود داشتن مقدار true برگشت می دهد.
مثال:
1 2 3 |
const letters = new Set(["a","b","c"]); letters.has("b") //true |
متد clear
با استفاده از این متد می توان کل اعضای یک مجموعه را پاک کنید.
مثال:
1 2 3 |
const letters = new Set(["a","b","c"]); letters.clear() //Set(0) {size: 0} |
خصوصیت size
یک مقدار عددی که بیانگر تعداد آیتم های موجود درون مجموعه set است.
مثال:
1 2 3 |
const letters = new Set(["a","b","c"]); letters.size; //3 |