- Ýaýradylan senesi
JavaScript-da Hash kartasy: Ýokary işleýişli açar-deňeş strukturasy
- Awtorlar
- Ady
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Nämeň Hatarynyň Neden?
Biliň, beýleki programmalan ýazyklyklaryň Hashtable diýen bir zat bar. Ol, maňyz-deňeşli jüpleri saklaýan we O(1) durnukly wagt gözlegleri bilen tanalýan bir maglumat gurluşydyr. Ol, maglumatlary saklamak üçin ulanyp bilýän ýeňil maglumat gurluşydyr. JavaScript-de, Hashtable ýaly gurluş ýok. Ýöne biz maglumatlary saklamak üçin obyekti ulanyp bileris. Oňa JavaScript-de Harita diýilýär.
Harita Näme?
Harita, her bir elementini maňyz-deňeşli jüpleriň görnüşinde saklaýan elementler toplumydyr. Haritanyň maňyzlary we deňeşleri (obyektler we primitiw deňeşler) hökmünde islendik deňeş bolup biler. Harita obyekti öz elementlerini goşulma tertibinde işläp geçýär - for...of döngüsü her bir iterasiýa üçin [maňyz, deňeş] massiwini gaýtarýar.
Harita, maňyzları islendik maglumat görnüşinde bolup bilýän maňyz-deňeşli jüpleri saklaýar. Haritanyň özüniň öçegine deň bolan bir häsiýeti bar. Harita maňyzlaryň başlangyç goşulma tertibine ýadyňa salýar.
Haritanyň Usuly we Häsiýeti
Usul | Açyklama |
---|---|
new Map() | Täze Harita obyektini döredýär |
set() | Haritadaky maňyz üçin deňeşi kesgitläýär |
get() | Maňyz üçin deňeşi gaýtarýar |
has() | Haritada maňyz bar bolsa, "true" (dogry) diýip gaýtarýar, ýok bolsa, "false" |
delete() | Haritadan maňyzy aýyrýar |
clear() | Haritadan ähli maňyzlary aýyrýar |
values() | Haritadaky deňeşleriň iterasiýa obyektini gaýtarýar |
keys() | Haritadaky maňyzlaryň iterasiýa obyektini gaýtarýar |
entries() | Haritadaky maňyz-deňeşli jüpleriň iterasiýa obyektini gaýtarýar |
forEach() | Haritadaky her bir maňyz-deňeşli jüpleriň üçin berilen funksiýany işläp geçýär |
Häsiýet | Açyklama |
---|---|
size | Haritadaky maňyz-deňeşli jüpleriň sanyny gaýtarýar |
Harita Mysaly
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']
console.log(map.size) // 5
Harita Iterasiýasy
const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])
// Maňyzlary işläp geç
for (const key of map.keys()) {
console.log(key)
}
// Deňeşleri işläp geç
for (const value of map.values()) {
console.log(value)
}
// Maňyz-deňeşli jüpleri işläp geç
for (const [key, value] of map.entries()) {
console.log(key, value)
}
// Maňyz-deňeşli jüpleri işläp geç
map.forEach((value, key) => {
console.log(key, value)
})
Harita vs. Obyekt
Harita | Obyekt |
---|---|
Harita, obyekt ýaly, maňyzly maglumat elementleriniň toplumydyr. Ýöne esasy tapawut, Haritanyň islendik görnüşli maňyzlary kabul etmegi. | Obyekt maňyzlary ýa-da simwolyň ýa-da satyryň bolmaly. |
Harita, iterirlidir we üzňüksiz döngülýär. | Obyekt iterirli däldir we üzňüksiz döngülýän däldir. |
Haritanyň özüne degişli forEach usuly bar, şonuň üçin ony massiwe öwürmek gerek däl. | Obyektde özüne degişli forEach usuly ýok. |
Haritanyň öçegine deň bolan bir häsiýeti bar, şonuň üçin elementleriň sanyny çalt ýüze çykaryp bileris. | Obyektde öçegine deň bolan häsiýet ýok. |
Harita, obyektleri maňyz hökmünde ulanyp biler. | Obyekt, obyektleri maňyz hökmünde ulanyp bilmeýär. |
Harita, umuman, obyektdan has çalt. | Obyekt, umuman, Haritadan has aşakda. |
Netije
Bu makalada JavaScript-de Harita barada öwrendik. Haritanyň usullary we häsiýetleri barada öwrendik. Şeýle-de Harita bilen Obyekt arasyndaky tapawutlar barada bildik. Umuman, bu makaladan hoşlanandygyňyza umyt edýärin. Eger soraglaryňyz bolsa, aşakda kommentariýa ýazyň. Okyandygyňyz üçin sag boluň.
Başlangyçda şu ýerde çap edildi: https://blog.imam.dev/blog/javascript-hashmap
Salgylar
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map