✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kaksisuuntaisen kartan luominen JavaScriptillä

9

Kaksisuuntainen kartta on tietojenkäsittelytieteen malli, jossa avain-arvo -pareilla on bijektiivinen 1-1 suhde avainten ja arvojen välillä. Tämä mahdollistaa kyselyn avaimella ja arvon saamisen lisäksi myös kyselyn arvon perusteella ja avaimen saamisen. Katsotaan, kuinka kaksisuuntainen kartta otetaan käyttöön JavaScriptissä ja tehdään siitä myöhemmin turvallinen TypeScriptissä

Tietojenkäsittely ja matematiikka takana

Otetaan kaksisuuntaisen kartan perusmääritelmä:

Tietojenkäsittelytieteessä kaksisuuntainen kartta on assosiatiivinen tietorakenne, jossa avain-arvo -parit muodostavat yksi-yhteen vastaavuuden. Näin ollen binäärisuhde on toiminnallinen joka suuntaan: jokainen arvo voidaan myös kartoittaa yksilölliseen avaimeen.

Kaksisuuntaisen kartan luominen JavaScriptillä

Luotto: Kaksisuuntainen kartta

Tietojenkäsittelytieteen kaksisuuntaisen kartan juuret ovat matemaattisessa funktiossa, jota kutsutaan bijektioksi. Suhde parin komponenttien ja sen kunkin komponentin välillä eri joukoissa on bijektiivinen funktio, jota kutsutaan myös käännettäväksi funktioksi, joka on funktio, joka toimii molemmilla tavoilla ja yhdistää täsmälleen yhden elementin joukosta täsmälleen yhden alkion kanssa. toinen setti:

Kaksisuuntaisen kartan luominen JavaScriptillä

Luotto: Bijection

Tämän mielessä voimme tietää, että bijektiivinen funktio yllä oleville joukoille tuottaa jotain seuraavanlaista:

f (1) = D
f (C) = 3

Toinen bijektiivifunktiosta aiheutuva asia on, että joukot ovat täsmälleen saman pituisia, muuten bijektio epäonnistuu.

Alusta kaksisuuntainen kartta

Mallimme tämän JavaScript – luokalla, joka alustetaan avain-arvoparien objektilla:

const bimap = new BidirectionalMap({ a: 'A', b: 'B', c: 'C', })

Sisäisesti luomme kaksi luetteloa. Yksi luettelo tallentaa luettelon pareista, joita kutsumme eteenpäin suunnatuksi kartaksi, jossa avainkartat arvoihin, ja se on kopio objektista, jota käytimme kaksisuuntaisen kartan alustamiseen. Toista luetteloa kutsutaan käänteiseksi kartaksi, ja se tallentaa kaksisuuntaisen kartan alustamiseen käytetyn objektin version, jossa avain-arvo -parit on käännetty ja "arvo" on nyt yhdistetty "avaimeen":

Huomaa, että kaksisuuntaisen kartan alustavan objektin luonteesta johtuen et voi käyttää avaimelle numeroa, mutta voit silti käyttää sitä arvona ja voit myöhemmin tehdä kyselyn sen perusteella:

const bimap = new BidirectionalMap({ a: 42, b: 'B', c: 'C', })

Vahvempi, mutta myös monimutkaisempi versio voitaisiin kirjoittaa JavaScriptin karttatietotyypillä ja sallia avaimet, jotka ovat numeroita, funktioita tai jopa NaN.

Hanki elementti kaksisuuntaisesta kartasta

Tähän asti meillä on tietorakenne, joka isännöi kahta objektia, joista toinen on toisen peili avainarvojen suhteen. Tarvitsemme nyt menetelmän saadaksemme siitä jotain irti. Toteutetaan get()funktio:

get( key) { return this.fwdMap[key] || this.revMap[key] }

Se on hyvin suoraviivaista: jos se on olemassa eteenpäin suunnatussa kartassa, palaamme sen, muuten palautamme sen käänteisestä kartasta. Jos sellaista ei ole, undefinedpalautetaan.

Voimme nyt saada joitain elementtejä, kuten:

console.log( bimap.get('a')) console.log( bimap.get('A'))

Lisää elementti kaksisuuntaiseen karttaan

Kartallamme ei ole tällä hetkellä tapaa lisätä elementtejä, joten lisätään toiminto uusien elementtien lisäämiseksi karttaan:

add( pair) { this.fwdMap[pair[0]] = pair[1] this.revMap[pair[1]] = pair[0] }

Tämä vastaanottaa kahden elementin taulukon, jonka kirjoitamme myöhemmin monikkona TypeScriptillä ja määrittää ne avainarvoiksi molempiin suuntiin vastaaville objekteille.

Ja nyt voimme lisätä parin ja kysyä tätä uutta paria

bimap.add(['d', 'D']) console.log( bimap.get('D'))

Tyyppiturvallinen kaksisuuntainen kartta TypeScriptissä

Asioiden parantamiseksi ja kirjoittamisen turvallisuuden parantamiseksi voimme kirjoittaa tämän uudelleen TypeScriptissä ja lisätä kirjoituskäsitteitä, kuten yleisen objektin karttaa alusttaessa ja monikkoa, kun lisäät uutta elementtiä.

Tämä kirjoittaminen tekee nyt kartasta täysin turvallisen ja varmistaa, että tässä tapauksessa käytämme aina merkkijonoja sekä avaimille että arvoille.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja