- Yayımlanma tarixi
JavaScript Seti: Başlayan Proqramçılar üçün Giriş
- Müəllif(lər)
- Ad
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Nə üçün Set?
Set, istənilən tipdə unikal dəyərlər saxlamağa imkan verən bir məlumat quruluşudur. Sıra ilə oxşardır, lakin təkrarlanan dəyərlərə icazə vermir. İstənilən növün unikal dəyərlərini saxlamaq üçün əla bir yoldur. Bəzən sırada unikal dəyərlər saxlamaq istəyirsiniz, ancaq dəyərin artıq mövcud olub-olmadığını yoxlamaq üçün sıranı dövrə vurmaq istəmirsiniz. Set bu zaman işə yarayır.
Əvvəlki məqalədə Javascript Map barədə danışdıq. Set, Map-ə bənzəyir, ancaq yalnız açarları saxlayır, dəyərləri yox. İstənilən növün unikal dəyərlərini saxlamaq üçün əla bir yoldur. Çox hallarda Map-dan istifadə etmək çətindir. Buna görə də Set haqqında danışaq.
JavaScript Set nədir?
Set obyektləri dəyərlərin toplusudur. Setdəki dəyər yalnız bir dəfə ola bilər; Set-in toplusunda unikaldır. Set-in elementlərini daxil edilmə ardıcıllığına görə təkrar edə bilərsiniz. Daxil edilmə ardıcıllığı, hər bir hissənin add() metodu tərəfindən Set-ə daxil edildiyi ardıcıllığa uyğundur (yəni Set add() çağırıldıqda, artıq Set-də eyni element yox idi).
Spesifikasiyaya görə, setlər "orta hesabla, toplusdakı elementlərin sayına görə xətti olmayan çıxış vaxtları təmin edən" şəkildə həyata keçirilməlidir. Buna görə daxili olaraq hash cədvəli (O(1) axtarış ilə), axtarış ağacı (O(log(N)) axtarış ilə) və ya digər məlumat quruluşu olaraq təmsil oluna bilər, əsas odur ki, mürəkkəblik O(N)-dən yaxşı olsun.
Set necə yaradılır?
Set yaratmaq üçün iki üsul var. Birinci üsul Set konstruktorunu istifadə etməkdir. İkinci üsul Set obyekt litaralını istifadə etməkdir.
Set konstruktoru
Set konstruktoru yeni bir Set obyekti yaradır. Konstruktura iterasiya olunan obyekt arqument kimi verilə bilər. İterasiya olunan obyektin elementləri yeni Set-ə əlavə olunacaq.
const set = new Set([1, 2, 3, 4, 5])
Set obyekt litaralı
Set obyekt litaralı yeni bir Set obyekti yaradır. Obyekt litaralına iterasiya olunan obyekt arqument kimi verilə bilər. İterasiya olunan obyektin elementləri yeni Set-ə əlavə olunacaq.
const set = {1, 2, 3, 4, 5};
Set Üsulları & Xassəsi
Üsul | Təsvir |
---|---|
add() | Set obyektinə müəyyən edilmiş dəyəri olan yeni bir element əlavə edir. |
clear() | Set obyektindən bütün elementləri silə bilər. |
delete() | Verilmiş dəyərə uyğun elementi silə bilər və əvvəllər Set.prototype.has(dəyər) tərəfindən qaytarılan dəyəri qaytarır. Sonradan Set.prototype.has(dəyər) yalnış qaytaracaq. |
entries() | Set obyektindəki hər bir element üçün [dəyər, dəyər] cütündən ibarət olan yeni Iterator obyekti qaytarır, daxil edilmə ardıcıllığında. |
forEach() | Set obyektindəki hər bir dəyər üçün verilmiş funksiyanı daxil edilmə ardıcıllığında bir dəfə yerinə yetirir. |
has() | Set obyektində verilmiş dəyərə malik elementin olub-olmadığını bildirən boolean qaytarır. |
keys() | Set obyektindəki hər bir element üçün dəyərləri daxil edilmə ardıcıllığında ehtiva edən yeni Iterator obyekti qaytarır. |
values() | Set obyektindəki hər bir element üçün dəyərləri daxil edilmə ardıcıllığında ehtiva edən yeni Iterator obyekti qaytarır. |
Xassə | Təsvir |
---|---|
size | Set obyektindəki dəyərlərin sayını qaytarır. |
Set Nümunələri
Set-ə dəyər əlavə etmək
const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }
Set-dən dəyər silmək
const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }
Set-də dəyərin olub-olmadığını yoxlamaq
const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // doğru
Set-də təkrarlama
const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
console.log(item)
}
// 1
// 2
// 3
// 4
// 5
Set-i Sıraya çevirmək
const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]
Sıranı Set-ə çevirmək
const array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }
Set-in ölçüsünü almaq
const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5
Set-i təmizləmək
const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}
Set-i birləşdirmək
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 }
İki Set-in kəsişməsini almaq
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 }
İki Set-in fərqini almaq
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 }
Set-in digər Set-in alt dəsti olub-olmadığını yoxlamaq
const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // doğru
Set-in digər Set-in üst dəsti olub-olmadığını yoxlamaq
const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // yalnış
İki Set-in ayrık olub-olmadığını yoxlamaq
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))) // doğru
İki Set-in bərabər olub-olmadığını yoxlamaq
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))) // doğru
Brauzer Dəstəyi
Chrome | Firefox | Edge | Safari | Opera |
---|---|---|---|---|
49+ | 44+ | 12+ | 10.1+ | 36+ |
Set vs. Sıra
Set | Sıra |
---|---|
Unikal dəyər, təkrarlanan dəyərlərə icazə vermir | Təkrarlanan dəyərlərə icazə verir |
Set, dəyərlərin toplusudur, xüsusi bir ardıcıllıq olmadan | Sıra, dəyərlərin toplusudur, xüsusi bir ardıcıllıqla |
Set iterasiya oluna bilər | Sıra iterasiya oluna bilər |
Set, hash prosesini istifadə etdiyindən sıra ilə müqayisədə başlanğıcda daha yavaşdır. | Sıra başlanğıcda daha sürətlidir |
Elementin mövcudluğunu yoxlamaqda performans daha yaxşıdır | Elementə çıxışda performans daha yaxşıdır |
Bu məqalə ilkin olaraq blog.imam.dev saytında dərc olunmuşdur.