Ýaýradylan senesi

JavaScript-da Hash kartasy: Ýokary işleýişli açar-deňeş strukturasy

Awtorlar

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

UsulAç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ýetAçyklama
sizeHaritadaky 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

HaritaObyekt
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

https://www.freecodecamp.org/news/what-is-a-javascript-map-what-are-the-differences-between-map-and-object-in-javascript/

https://www.geeksforgeeks.org/map-vs-object-javascript/