set در JS
مجموعه (set) همانند آرایه قطاری از داده ها هستند. اما برخلاف آرایه، مقدارها در set، منحصر به فرد هستند و مقدار مشابه وجود ندارد.
const persons = new Set();
نکته: مقادیر set ها می تواند از هر نوع داده ای باشد.
مجموعه ها مانند آرایه از نوع شیء هستند.
typeof persons; // object بر میگرداند
persons instanceof Set; // true بر میگرداند
ساخت مجموعه (set) در JS
برای ساخت set باید از شیء سراسری Set() استفاده کرد.
const persons = new Set();
const persons = new Set(["Amir", "Ali", "Reza"]);
همچنین میتوانیم یک Set خالی ایجاد کرده و سپس با متد add() به آن مقادیر را اضافه کنیم.
const persons = new Set();
persons.add("Amir");
persons.add("Ali");
persons.add("Reza");
مقادیر set منحصر به فرد هستند!
همانطور که گفته شد مقادیر Set، منحصر به فرد هستند. در نمونه کد زیر، مقادیر تکراری در در مجموعه ذخیره نمی شوند.
const persons = new Set(["Amir", "Ali", "Reza"]);
// افزودن متغیر
persons.add("Mahsa");
persons.add("Ali"); // تکراری
persons.add("Ali"); // تکراری
persons.add("Ali"); // تکراری
persons.add("Mahsa"); // تکراری
نمایش مجموعه (set) در JS
برای نمایش یک مجموعه می توانید با استفاده از حلقه for of، المان های (مقادیر) مجموعه را لیست کنید.
const persons = new Set(["Amir", "Ali", "Reza"]);
let text = "";
for (const person of persons) {
text += person;
}
متد has()
متد has()، یک set را بررسی و یک بولین را بر می گرداند. اگر set حاوی مقدار مشخص شده باشد، true و در غیر این صورت false را بر می گرداند.
const persons = new Set(["Amir", "Ali", "Reza"]);
persons.has("Ali");
متد forEach()
متد forEach()، یک تابع را برای هر المان مجموعه فراخوانی می کند.
const persons = new Set(["Amir", "Ali", "Reza"]);
// لیست کردن مقادیر مجموعه
let text = "";
persons.forEach(function(person) {
text += person;
});
متد values()
متد values()، یک شیء تکرار شونده (Iterator) را با مقادیر موجود در یک مجموعه برمی گرداند.
const persons = new Set(["Amir", "Ali", "Reza"]);
let text = "";
for(const person of persons.values()) {
text += person;
};
نکته: متد values() مجموعه اصلی را تغییر نمی دهد.
متد keys()
متد keys()، یک شیء تکرار شونده (Iterator) را با مقادیر موجود در یک مجموعه برمی گرداند.
نکته: از آنجایی که یک مجموعه کلید ندارد، متد keys() همان values() را بر می گرداند. این باعث می شود مجموعه ها (sets) با نقشه ها (maps) سازگار باشد.
const persons = new Set(["Amir", "Ali", "Reza"]);
let text = "";
for(const person of persons.keys()) {
text += person + "";
};
نکته: متد keys() مجموعه اصلی را تغییر نمی دهد.
متد entries()
متد entries()، یک شیء تکرار شونده (Iterator) را با جفت [value, value] از یک مجموعه را برمی گرداند.
نکته: متد entries() در حالت عادی یک جفت [key, value] را از یک شی بر می گرداند.
ولی از آنجایی که مجموعه ها کلید ندارند، بنابراین متد entries()، [value, value] را بر می گرداند.
const persons = new Set(["Amir", "Ali", "Reza"]);
let text = "";
for(const person of persons.entries()) {
text += JSON.stringify(person) + "";
};