Yayımlanma tarixi

JavaScript Seti: Başlayan Proqramçılar üçün Giriş

Müəllif(lər)

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

ÜsulTə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
sizeSet 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

ChromeChromeFirefoxFirefoxEdgeEdgeSafariSafariOperaOpera
49+44+12+10.1+36+

Set vs. Sıra

SetSıra
Unikal dəyər, təkrarlanan dəyərlərə icazə vermirTəkrarlanan dəyərlərə icazə verir
Set, dəyərlərin toplusudur, xüsusi bir ardıcıllıq olmadanSıra, dəyərlərin toplusudur, xüsusi bir ardıcıllıqla
Set iterasiya oluna bilərSı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ırElementə çıxışda performans daha yaxşıdır

Bu məqalə ilkin olaraq blog.imam.dev saytında dərc olunmuşdur.

İstinadlar

  1. Mozilla Developer Network - Set

  2. W3Schools - Set

  3. ECMAScript® 2015 Language Specification - Set