Sets

Set یکی از ساختارهای داده (Data Structure) در جاوااسکریپت هست که برای نگهداری مجموعه‌ای از مقادیر یکتا (Unique values) استفاده می‌شه.
یعنی هر مقدار داخل Set فقط یک بار می‌تونه وجود داشته باشه.

🔹 ایجاد یک Set

برای ساختن یک Set می‌تونیم از سازنده‌ی Set() استفاده کنیم:

// یک Set خالی const mySet = new Set(); // یک Set با مقادیر اولیه const numbers = new Set([1, 2, 3, 4, 4, 5]); console.log(numbers); // Set(5) {1, 2, 3, 4, 5}

📌 دقت کن → مقدار 4 دوبار نوشته شده، ولی داخل Set فقط یک بار ذخیره می‌شه.

🔹 متدهای پرکاربرد Set

1️⃣ ()add

برای اضافه کردن مقدار جدید به Set:

const fruits = new Set(); fruits.add("apple"); fruits.add("banana"); fruits.add("apple"); // تکراری، اضافه نمی‌شه console.log(fruits); // Set(2) {"apple", "banana"}

2️⃣ ()delete

برای حذف یک مقدار:

fruits.delete("banana"); console.log(fruits); // Set(1) {"apple"}

3️⃣ ()has

برای بررسی وجود یک مقدار:

console.log(fruits.has("apple")); // true console.log(fruits.has("banana")); // false

4️⃣ ()clear

برای خالی کردن کل Set:

fruits.clear(); console.log(fruits); // Set(0) {}

5️⃣ size

برای گرفتن تعداد عناصر Set:

const nums = new Set([10, 20, 30, 40]); console.log(nums.size); // 4

🔹 پیمایش (Iteration) روی Set

استفاده از for...of

for (const item of nums) { console.log(item); }

استفاده از forEach

nums.forEach((value) => { console.log(value); });

🔹 تبدیل Set به Array

گاهی لازم داریم که Set رو به آرایه تبدیل کنیم (مثلاً برای مرتب‌سازی):

const arr = Array.from(nums); console.log(arr); // [10, 20, 30, 40] // یا با Spread Operator const arr2 = [...nums];

🔹 مثال کاربردی: حذف مقادیر تکراری از آرایه

const numbersArray = [1, 2, 3, 3, 4, 4, 5, 6]; const uniqueNumbers = [...new Set(numbersArray)]; console.log(uniqueNumbers); // [1, 2, 3, 4, 5, 6]

🎯 تمرین عملی (کامل)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript Sets Example</title> </head> <body> <h2>JavaScript Sets</h2> <pre id="output"></pre> <script> const output = document.getElementById("output"); // ایجاد یک Set const mySet = new Set([1, 2, 2, 3, 4]); output.innerText += "📌 مقدار اولیه: " + JSON.stringify([...mySet]) + "\n"; // افزودن مقدار mySet.add(5); mySet.add(3); // تکراری → نادیده گرفته می‌شه output.innerText += "➕ بعد از add(5): " + JSON.stringify([...mySet]) + "\n"; // حذف مقدار mySet.delete(2); output.innerText += "❌ بعد از delete(2): " + JSON.stringify([...mySet]) + "\n"; // بررسی وجود output.innerText += "🔍 mySet.has(3): " + mySet.has(3) + "\n"; // اندازه output.innerText += "📏 اندازه‌ی Set: " + mySet.size + "\n"; // تبدیل به آرایه const arr = [...mySet]; output.innerText += "🔄 تبدیل به Array: " + JSON.stringify(arr) + "\n"; </script> </body> </html>

📌 نتیجه‌گیری

  • Set مجموعه‌ای از مقادیر یکتا ذخیره می‌کنه.

  • متدهای مهم: add(), delete(), has(), clear() و ویژگی size.

  • می‌شه Set رو پیمایش کرد و به Array تبدیل کرد.

  • کاربرد خیلی مهم: حذف عناصر تکراری از آرایه‌ها.