شیء ست (Set object)
اشیاء Set مجموعهای از مقادیر منحصربهفرد (Unique values) هستند. شما میتوانید عناصر داخل یک Set را بر اساس ترتیب ورودشان (Insertion order) پیمایش کنید. یک مقدار در یک Set فقط و فقط یکبار میتواند حضور داشته باشد؛ یعنی وجود مقادیر تکراری در آن امکانپذیر نیست.
کد زیر برخی از عملیاتهای پایه با یک Set را نشان میدهد:
const mySet = new Set();
mySet.add(1);
mySet.add("some text");
mySet.add("foo");
mySet.has(1); // true
mySet.delete("foo");
mySet.size; // 2
for (const item of mySet) {
console.log(item);
}
// خروجی:
// 1
// "some text"
تبدیل Array و Set به یکدیگر
شما میتوانید با استفاده از متد Array.from یا نحوِ پخش کردن (Spread syntax)، یک Array از روی یک Set بسازید. در مسیر برگشت نیز، تابع سازندهی Set یک Array را به عنوان ورودی میپذیرد تا آن را به ست تبدیل کند.
نکتهی مهم: از آنجا که اشیاء
Setفقط مقادیر منحصربهفرد را ذخیره میکنند، هنگام تبدیل یک Array به Set، تمام عناصر تکراری موجود در آن آرایه به طور خودکار حذف میشوند!
Array.from(mySet);
[...mySet2];
mySet2 = new Set([1, 2, 3, 4]);
مقایسهی Array و Set
به طور سنتی در جاوااسکریپت، در بسیاری از موقعیتها مجموعهای از عناصر درون آرایهها ذخیره میشدند. با این حال، شیء Set مزایایی دارد که عبارتند از:
-
حذف کردن عناصر یک Array بر اساس مقدار (با دستور
((arr.splice(arr.indexOf(val), 1) بسیار کند و سنگین است. -
اشیاء
Setبه شما اجازه میدهند عناصر را مستقیماً بر اساس «مقدار» آنها حذف کنید. در حالی که در یک آرایه، مجبورید ابتدا ایندکس عنصر را پیدا کرده و سپس عملspliceرا انجام دهید. -
مقدار
NaNرا نمیتوان با متدindexOfدر یک آرایه پیدا کرد. -
اشیاء
Setمقادیر را به صورت منحصربهفرد ذخیره میکنند و نیازی نیست شما به صورت دستی نگران مدیریت و ردیابی مقادیر تکراری باشید.
شیء ویکست (WeakSet object)
اشیاء WeakSet مجموعهای از مقادیر قابل پاکسازی از حافظه (Garbage-collectable values) هستند که شامل اشیاء (Objects) و سمبولهای ثبتنشده (Non-registered symbols) میشوند. یک مقدار در WeakSet نیز فقط یکبار میتواند تکرار شود و در کل مجموعه منحصربهفرد است.
تفاوتهای اصلی WeakSet با شیء Set معمولی عبارتند از:
-
برخلاف
Setها، اشیاءWeakSetفقط مجموعهای از Objects یا Symbols هستند و نمیتوانند حاوی مقادیر دلخواه از هر نوع دادهای (مثل اعداد یا رشتهها) باشند. -
ارجاعها در این مجموعه از نوع ضعیف (Weak) هستند؛ ارجاع به اشیاء درون مجموعه به صورت ضعیف نگه داشته میشود. اگر هیچ ارجاع دیگری به یک شیءِ ذخیره شده در
WeakSetوجود نداشته باشد، آن شیء میتواند توسط سیستم مدیریت حافظه (Garbage collection) پاک شود. این موضوع همچنین به این معنی است که هیچ لیستی از اشیاء فعلیِ موجود در این مجموعه وجود ندارد. -
اشیاء
WeakSetقابلیت شمارش و پیمایش (Enumerable) ندارند (نمیتوان روی آنها حلقه زد).
موارد کاربرد (Use cases) اشیاء WeakSet محدود است. از آنجا که آنها باعث نشت حافظه (Memory leak) نمیشوند، به عنوان مثال میتوانید با خیال راحت از عناصر DOM به عنوان کلید استفاده کنید و آنها را برای اهداف ردیابی (Tracking) علامتگذاری نمایید.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات