منتشر شده در

جاوا سکرپټ سیټ: د پیل کونکو پروګرامرانو لپاره لومړني معلومات

نویسندگان

ولې سیټ؟

سیټ یو ډیټا سټرکچر دی چې تاسو ته اجازه درکوي چې د هر ډول ځانګړې ویلو ذخیره کړئ. دا د اری په څیر دی مګر دوه چنده ویلو ته اجازه نه ورکوي. دا د هر ډول ځانګړې ویلو ساتلو لپاره یوه ښه لاره ده. ځینې ​​​​وختونه تاسو غواړئ چې ځانګړې ویلو په یوه اری کې ذخیره کړئ، مګر تاسو نه غواړئ چې د اری له لارې لوپ وکړئ ترڅو وګورئ چې ایا ارزښت دمخه شتون لري. دا هغه ځای دی چې سیټ ګټور دی.

په مخکینۍ مقاله کې، موږ په اړه بحث وکړ Javascript Map. سیټ د مپ سره ورته دی، مګر دا یوازې کییز ذخیره کوي، نه ارزښتونه. دا د هر ډول ځانګړې ویلو ساتلو لپاره یوه ښه لاره ده. په ډیری قضیو کې د مپ کارول ګران دی. له همدې امله راځئ چې د سیټ په اړه وغږیږو.

څه شی دی جاوا سکریپټ سیټ؟

سیټ اوبجیکټ د ویلو مجموعه ده. په سیټ کې ارزښت ممکن یوازې یوځل راشي؛ دا په سیټ کې د ویلو په مجموعه کې ځانګړی دی. تاسو کولی شئ د سیټ د عناصر له لارې د داخلولو ترتیب سره تکرار وکړئ. د داخلولو ترتیب د هغه ترتیب سره مطابقت لري چې هر ټوټه په سیټ کې د 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) به وروسته نادرست بیرته ورکړي.
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

د براوزر ملاتړ

ChromeکرومFirefoxفایرفاکسEdgeایجSafariسفاريOperaاوپیرا
49+44+12+10.1+36+

سیټ مقابل اری

سیټاری
ځانګړی ارزښت، دوه چنده ارزښت ته اجازه نه ورکويدوه چنده ارزښت ته اجازه ورکوي
سیټ د ویلو مجموعه ده په هیڅ ځانګړي ترتیب کې نهاری د ویلو مجموعه ده په یوه ځانګړي ترتیب کې
سیټ تکرار وړ دیاری تکرار وړ دی
سیټ د اری په پرتله په پیل کې ورو دی ځکه چې دا د هیش پروسې کاروي.اری د پیل کې په سرعت سره کار کوي
کله چې د عنصر وجود چیک کړئ، کارکړنه ښه دهکله چې عنصر ته لاسرسی ومومي، کارکړنه ښه ده

دا مقاله په اصل کې په blog.imam.dev کې خپره شوي ده.

مراجع

  1. Mozilla Developer Network - Set

  2. W3Schools - Set

  3. ECMAScript® 2015 Language Specification - Set