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) + "";
};
توسعه دهندگان
احسان اسلامی