- Ýaýradylan senesi
JavaScript Toplamasy: Doly Programaçylar Üçin Ýol Gösteriji
- Awtorlar
- Ady
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Näme Set näme?
Set, islenýň her hiliň görnüşiniň üýtgeşik gymmatlyklaryny saklamak üçin mümkinçilik berýän maglumat gurluşydyr. Ol massiwe meňzeýär, ýöne takrarlanan gymmatlyklaryň bolmagyna rugsat bermeýär. Her hili görnüşde üýtgeşik gymmatlyklary saklamak üçin ajaýyp usuldyr. Käwagt siz massiwde üýtgeşik gymmatlyklary saklamak isleýärsiňiz, ýöne gymmatlygyň öňden bar-ýokdugyny barlamak üçin massiwi döwriňiz gerekmeýär. Şonda Set size ýardam berer.
Öňki makalada biz Javascript Map barada gürrüň etdik. Set, Map-a meňzeýär, ýöne ol diňe açarlary, gymmatlyklary däl, saklaýar. Her hili görnüşde üýtgeşik gymmatlyklary saklamak üçin ajaýyp usuldyr. Map-y köp halatlarda ulanmak kyn bolýar. Şonuň üçin Set barada gürrüň edeli.
Javascript Set näme?
Set obýektleri, gymmatlyklaryň toplumlarydyr. Set-de bir gymmatlyk diňe bir gezek bolup biler; ol Set-iň toplamında üýtgeşikdir. Set-iň elementlerini goşulma tertibine görä döwrip bilersiňiz. Goşulma tertibi, her bölegi Set-e add() usuly bilen üstünlikli goşulanyň tertibine laýyk gelýär (ýagny Set add()-y çagyrandan soň, Set-de eýýäm şol bir ýaly element bolmady).
Spetsifikasiýa Set-leri, "ortaça, toplumdaky elementleriň sanynyň üstünde sublinear erişim wagtlaryny üpjün edýän" usullarda amala aşyrylmagyny talap edýär. Şonuň üçin ony içki tarapdan heş-tablisa (O(1) gözleg bilen), gözleg agajyna (O(log(N)) gözleg bilen) ýa-da başga bir maglumat gurluşyna hödürlemek mümkin, esasysi, toplumyň çylşyrymlylygy O(N)-den gowy bolmalydyr.
Set-i nädip döretmeli?
Set-i döretmegiň iki usuly bar. Birinji usul Set konstruktoruny ulanmakdyr. Ikinji usul Set obýekt literalyn ulanmakdyr.
Set konstruktor
Set konstruktor, täze Set obýektini döredýär. Konstruktor üçin argument hökmünde iterirlenýän obýekti berip bilersiňiz. Iterirlenýän obýektiň elementleri täze Set-e goşular.
const set = new Set([1, 2, 3, 4, 5])
Set obýekt literaly
Set obýekt literaly, täze Set obýektini döredýär. Obýekt literal üçin argument hökmünde iterirlenýän obýekti berip bilersiňiz. Iterirlenýän obýektiň elementleri täze Set-e goşular.
const set = {1, 2, 3, 4, 5};
Set Usullary & Ýagtylyk
Usul | Açyklamalar |
---|---|
add() | Set obýektiň içine görkezilen gymmatlykly täze elementi goşýar. |
clear() | Set obýektinden ähli elementleri aýyrýar. |
delete() | Görkezilen gymmatlyk bilen baglanyşykly elementi aýyrýar we Set.prototype.has(value) öňünden gaýtarjak gymmatlygy gaýtarýar. Set.prototype.has(value) soňra ýalan gaýtarar. |
entries() | Goşulma tertibine görä Set obýektindäki her bir element üçin [value, value] massiwini öz içine alýan täze Iterator obýektini gaýtarýar. |
forEach() | Goşulma tertibine görä Set obýektindäki her bir gymmatlyk üçin berilen funksiýany bir gezek ýerine ýetirýär. |
has() | Set obýektinde görkezilen gymmatlyk bilen baglanyşykly element bar-ýokdugyny tassyklaýan boolean gaýtarýar. |
keys() | Goşulma tertibine görä Set obýektindäki her bir element üçin gymmatlyklary öz içine alýan täze Iterator obýektini gaýtarýar. |
values() | Goşulma tertibine görä Set obýektindäki her bir element üçin gymmatlyklary öz içine alýan täze Iterator obýektini gaýtarýar. |
Ýagtylyk | Açyklamalar |
---|---|
size | Set obýektindäki gymmatlyklaryň sanyny gaýtarýar. |
Set Mysallary
Set-e gymmatlyk goşmak
const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }
Set-den gymmatlygy aýyrmak
const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }
Set-de gymmatlygyň bar-ýokdugyny barlamak
const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true
Set-i döwriň
const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
console.log(item)
}
// 1
// 2
// 3
// 4
// 5
Set-i massiwe öwürmek
const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]
Massiwi Set-e öwürmek
const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }
Set-iň ölçegine seretmek
const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5
Set-i arassalamak
const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}
Set-leri birleşdirmek
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 }
Iki Set-iň kesişmegini almak
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 }
Iki Set-iň tapawutyny almak
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-iň başga bir Set-iň alt toplumydygyny barlamak
const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // true
Set-iň başga bir Set-iň üst toplumydygyny barlamak
const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // false
Iki Set-iň aýry-aýrydygyny barlamak
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
Iki Set-iň deňdigini barlamak
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
Браузерлерde ýaýranlygy
Chrome | Firefox | Edge | Safari | Opera |
---|---|---|---|---|
49+ | 44+ | 12+ | 10.1+ | 36+ |
Set vs. Massiw
Set | Massiw |
---|---|
Üýtgeşik gymmatlyk, takrarlanan gymmatlyklaryň bolmagyna rugsat bermeýär | Takrarlanan gymmatlyklaryň bolmagyna rugsat berýär |
Set, gymmatlyklaryň tertibi bilen baglanyşykly däl, ýygyndysydyr | Massiw, gymmatlyklaryň tertibi bilen baglanyşyklydyr |
Set iterirlenýän | Massiw iterirlenýän |
Set, heş prosesini ulanýandygy üçin massiwe garanda başlangyçda geç bolýar. | Massiw, başlangyçda tiz bolýar. |
Element bar-ýokdugyny barlamakda ýokary işjeňlik | Elementlere erişimde ýokary işjeňlik |
Bu makalanyň başdan blog.imam.dev saýtynda çap edildi.