منتشر شده در

مجموعه جاوا اسکریپت: اطلاعات اولیه برای توسعه دهندگان مبتدی

نویسندگان

چرا از مجموعه (Set) استفاده کنیم؟

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

در یک مقاله قبلی، نقشه جاوا اسکریپت را مورد بحث قرار دادیم. مجموعه شبیه به نقشه است، اما فقط کلیدها را ذخیره می‌کند، نه مقادیر. مجموعه یک راه عالی برای نگه داشتن مقادیر منحصر به فرد از هر نوعی است. استفاده از نقشه در بسیاری از موارد زیاد است. به همین دلیل بیایید در مورد مجموعه صحبت کنیم.

مجموعه جاوا اسکریپت چیست؟

اشیاء مجموعه (Set) مجموعه‌هایی از مقادیر هستند. هر مقدار در مجموعه ممکن است فقط یک بار ظاهر شود. در مجموعه، آن مقدار منحصر به فرد است. شما می‌توانید از طریق عناصر یک مجموعه به ترتیب درج آنها حلقه بزنید. ترتیب درج با ترتیبی مطابقت دارد که هر عنصر به طور موفقیت‌آمیز توسط روش add() در مجموعه درج شده است (یعنی عنصر یکسانی قبلاً در مجموعه وجود نداشته است زمانی که مجموعه add() را فراخوانی کرده است).

مشخصات نیاز دارد که مجموعه‌ها به طوری پیاده‌سازی شوند که "به طور میانگین، زمان دسترسی را ارائه می‌دهند که نسبت به تعداد عناصر در مجموعه زیرخطی است." بنابراین، می‌تواند درونی به عنوان یک جدول هش (با جستجوی O(1)), درخت جستجو (با جستجوی O(log(N))), یا هر ساختار داده دیگری ارائه شود، تا زمانی که پیچیدگی بهتر از O(N) باشد.

چگونه یک مجموعه ایجاد کنیم؟

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

سازنده مجموعه

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

const set = new Set([1, 2, 3, 4, 5])

لیترال شیء مجموعه

لیترال شیء مجموعه یک شیء مجموعه جدید ایجاد می‌کند. شما می‌توانید یک شیء قابل تکرار را به عنوان یک آرگومان به لیترال شیء ارسال کنید. عناصر شیء قابل تکرار به مجموعه جدید اضافه می‌شوند.

const set = {1, 2, 3, 4, 5};

روش‌ها و ویژگی مجموعه

روشتوضیحات
add()یک عنصر جدید با یک مقدار مشخص به شیء مجموعه اضافه می‌کند.
clear()تمام عناصر را از شیء مجموعه حذف می‌کند.
delete()عنصری که با مقدار مشخص شده مرتبط است را حذف می‌کند و مقداری را برمی‌گرداند که Set.prototype.has(value) قبلاً برمی‌گردانده است. Set.prototype.has(value) بعداً false را برمی‌گرداند.
entries()یک شیء Iterator جدید را برمی‌گرداند که شامل یک آرایه از [مقدار، مقدار] برای هر عنصر در شیء مجموعه است، به ترتیب درج.
forEach()یک تابع ارائه شده را یک بار برای هر مقدار در شیء مجموعه اجرا می‌کند، به ترتیب درج.
has()یک مقدار بولین را برمی‌گرداند که نشان می‌دهد آیا یک عنصر با مقدار داده شده در شیء مجموعه وجود دارد یا خیر.
keys()یک شیء Iterator جدید را برمی‌گرداند که شامل مقادیر برای هر عنصر در شیء مجموعه به ترتیب درج است.
values()یک شیء Iterator جدید را برمی‌گرداند که شامل مقادیر برای هر عنصر در شیء مجموعه به ترتیب درج است.
ویژگیتوضیحات
sizeتعداد مقادیر در شیء مجموعه را برمی‌گرداند.

مثال‌های مجموعه

اضافه کردن یک مقدار به مجموعه

const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }

حذف یک مقدار از مجموعه

const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }

بررسی وجود یک مقدار در مجموعه

const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true

حلقه زدن از طریق مجموعه

const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
  console.log(item)
}
// 1
// 2
// 3
// 4
// 5

تبدیل مجموعه به آرایه

const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]

تبدیل آرایه به مجموعه

const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }

دریافت اندازه مجموعه

const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5

پاک کردن مجموعه

const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}

ادغام مجموعه

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
const set3 = new Set([...set1, ...set2])
console.log(set3) // Set { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

دریافت تقاطع دو مجموعه

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => set2.has(x)))
console.log(set3) // Set { 4, 5 }

دریافت اختلاف دو مجموعه

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => !set2.has(x)))
console.log(set3) // Set { 1, 2, 3 }

بررسی اینکه مجموعه زیرمجموعه دیگری است

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // true

بررسی اینکه مجموعه فوق مجموعه دیگری است

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // false

بررسی اینکه دو مجموعه از هم جدا هستند

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
console.log([...set1].every((x) => !set2.has(x))) // true

بررسی اینکه دو مجموعه برابر هستند

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([1, 2, 3, 4, 5])
console.log(set1.size === set2.size && [...set1].every((x) => set2.has(x))) // true

پشتیبانی مرورگر

ChromeChromeFirefoxFirefoxEdgeEdgeSafariSafariOperaOpera
49+44+12+10.1+36+

مجموعه در مقابل آرایه

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

این مقاله در ابتدا در blog.imam.dev منتشر شد.

منابع

  1. شبکه توسعه دهنده موزیلا - مجموعه

  2. W3Schools - مجموعه

  3. مشخصات زبان ECMAScript® 2015 - مجموعه