- منتشر شده در
جاوا سکرپټ سیټ: د پیل کونکو پروګرامرانو لپاره لومړني معلومات
- نویسندگان
- نام
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
ولې سیټ؟
سیټ یو ډیټا سټرکچر دی چې تاسو ته اجازه درکوي چې د هر ډول ځانګړې ویلو ذخیره کړئ. دا د اری په څیر دی مګر دوه چنده ویلو ته اجازه نه ورکوي. دا د هر ډول ځانګړې ویلو ساتلو لپاره یوه ښه لاره ده. ځینې وختونه تاسو غواړئ چې ځانګړې ویلو په یوه اری کې ذخیره کړئ، مګر تاسو نه غواړئ چې د اری له لارې لوپ وکړئ ترڅو وګورئ چې ایا ارزښت دمخه شتون لري. دا هغه ځای دی چې سیټ ګټور دی.
په مخکینۍ مقاله کې، موږ په اړه بحث وکړ 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
د براوزر ملاتړ
کروم | فایرفاکس | ایج | سفاري | اوپیرا |
---|---|---|---|---|
49+ | 44+ | 12+ | 10.1+ | 36+ |
سیټ مقابل اری
سیټ | اری |
---|---|
ځانګړی ارزښت، دوه چنده ارزښت ته اجازه نه ورکوي | دوه چنده ارزښت ته اجازه ورکوي |
سیټ د ویلو مجموعه ده په هیڅ ځانګړي ترتیب کې نه | اری د ویلو مجموعه ده په یوه ځانګړي ترتیب کې |
سیټ تکرار وړ دی | اری تکرار وړ دی |
سیټ د اری په پرتله په پیل کې ورو دی ځکه چې دا د هیش پروسې کاروي. | اری د پیل کې په سرعت سره کار کوي |
کله چې د عنصر وجود چیک کړئ، کارکړنه ښه ده | کله چې عنصر ته لاسرسی ومومي، کارکړنه ښه ده |
دا مقاله په اصل کې په blog.imam.dev کې خپره شوي ده.