KompjûtersProgramming

JavaSkript-array en syn skepping. All about JavaSkript rigen

Yn dit artikel sille wy sjen nei JavaScript-array, syn komponinten. JavaSkript is in perfekte senario rjochte taal ûntwurpen foar programmearring. Yn feite giet it ymplemintearret it ECMAScript taal (standert ECMA- 262).

Of JavaScript? It wurdt brûkt as in ynbêde taal om te bepalen fan it paad fan it programma nei it ûnderwerp applikaasje. It is te finen yn 'e browser: dat brûkt wurdt dêr as skripttaal dy't jout websiden ynteraktyf.

De meast wichtige arsjitektoanyske skaaimerken fan dit produkt binne dynamyske en swak typen, avtoupravlenie ûnthâld, ideale programmearring funksjes, dy't binne de objekten fan de earste kategory.

Eins, yn JavaSkriptName beynfloede ferskillende redenen, omdat de ûntwikkeling soe meitsje in taal te ferlykjen mei Java, mar wol maklik om te brûken by programmeurs. Troch de wei, de JavaSkript taal is net eigner gjin bedriuw of organisaasje dy't makket dat oars út in oantal programmearring stilen brûkt troch web ûntwikkelers.

Dêrby moat betocht wurde dat JavaSkript - in registrearre hannelsmerk fan Oracle Corporation Group.

Wat in rige is?

Neamd array data type, dy't slacht nûmere wearden. Eltse sa'n wearde wurdt oantsjut as de array ûnderdiel en it sifer út dat bynt it komponint, neamd in yndeks. JavaSkript-array fan untyped. Dat betsjut dat de fêste dielen kinne hawwe wat type, mei ferskillende ûnderdielen dy't ta deselde rige, hawwe hiele oare types.

Dêrneist JavaSkript-array is dynamysk, en der wurdt sein dat in fêst grutte hoecht net ferklearre. Nei't tafoegjen fan nije dielen op elts momint.

bêst produksje

Mei help fan de JavaScript taal te meitsjen in rige is hiel dreech. Der binne twa metoaden foar dit. It earste giet it om de produksje fan in rige is mei help fan in letterlike - fan fjouwerkante heakjes, binnen dêr't wurdt pleatst in list fan items, ferdield troch komma.

  • var lege = []; // lege array;
  • var nûmers = [4, 1, 2, 5]; // array mei fiif digitale ûnderdielen;
  • var diff = [1.5, falsk, «text"]; // array mei trije eleminten fan ferskillende typen.

As regel, it is net nedich te wêzen ienfâldige wearden (Rigen en sifers). It kin ek wêze eltse oare uteringen, bygelyks, foarwerp literals, oare funksjes en rigen.

De twadde wize te meitsjen in rige is ûntwerper is te belje Array (). Útnoegje him ta ien fan de trije metoaden:

  • Neame ûntwerper sûnder arguminten: var b - new Array (). It soarget foar it skeppen fan in lege array lykweardich oan in lege letterlike [].
  • De ûntwerper hat yngiet op de wearde n fan 'e rige ûnderdielen: var b = new Array (1, 3, 5, 8, "line», wier). Yn dit gefal, de ûntwerper presintearre in list mei arguminten, dy't wurde omfoarme ta in nije rige ûnderdielen. Arguminten binne skreaun ta de rige is de lokaasje dêr't oanjûn.
  • Defining oer de romte foar fierdere it tawizen fan wearden. Dit wurdt dien troch mei opjefte fan it opspoaren array in oantal ynsletten tusken heakjes: var b = new Array (5). Dy wize fan detection dêrby om de tadieling array nedich bedraggen fan komponinten (elk dêrfan wurdt neamd as undefined) mei in mooglikheid fan it tawizen fan wearden yn presintaasje. Dit formulier wurdt meastal brûkt foar it pre-allocate de Javascript-array waans lingte is bekend fan tefoaren.

Recording, lêzen en it taheakjen fan details fan de rige

Get ta de ûnderdielen fan de rige kin fia operator []. Troch de wei, al fan de komponinten yn JavaSkriptName, begjinnende mei nul, binne nûmere. Om krijen de nedige eleminten, wize op syn nûmer yn fjouwerkante heakjes. As algemiene regel, items kin feroare wurde. In JavaScript oan heakjen oan 'e rige, is it genôch om tawize in nije wearde.

Dêrby moat opmurken wurde dat yn JavaSkriptName rigen kinne opslaan eltse oantal eleminten fan hokker soarte.

De lingte fan de rige

Sa witte wy wat JavaScript. lingte fan de rige yn it algemien is in nijsgjirrich fenomeen. Nim no it yn mear detail. Alle ranges oanlein wurde mei help fan Array Designer () en ûntdutsen fia in letterlike rige hawwe in spesifike lingte eigendom, dat jout har it totaal oantal eleminten sparje. Sûnt de rige kin wêze ûnwis fan de details (undefined De oanwiisd), in mear presys ekspresje klinkt sa: Kwaliteit lingte is altyd grutter troch ien as de grutste oantal (index) fan 'e array komponint. Kwaliteit lingte wurdt oanpast automatysk, ferbliuwe presys by de ferskining fan in ferskaat oan nije details.

Om de úteinlike komponint fan in rige is, kinne jo gebrûk meitsje fan de lingte eigendom.

It lêste part is de yndeks ien minder as de grutte fan 'e rige. Nei't de aftellen begjinne altiten hielendal opnij yn. Och, dy JavaSkript! De lingte fan de rige is ôfhinklik fan syn krekte oantal eleminten. Dêrom, as jo net witte hoefolle der wêze moat, mar jo moatte de oan de finale elemint fan 'e rige, is it nedich om te passen it rekord: v.length - 1.

Iterate de rige fan ûnderdielen

Hiel faak, de lingte eigenskip wurdt brûkt om Iterate oer de rige fan de dielen yn de syklus:

  • var fruits = [ «aardbei", "perzik," "appel," "banaan"];
  • foar (var Ik = 0; i
  • document.write (fruchten [i] + «...»).

Yn dit foarbyld docht bliken dat de ûnderdielen binne oardere kontinu en begjinne mei it earste diel, dat hâldt index nul. As dat net it gefal, foardat ropt elk elemint fan de rige moat selektearre wurde as it is definiearre.

De syklus wurdt ek wolris brûkt Inisjalisearjen fan de komponinten.

De ferheging en it truncation array

Ik fernuverje hoe't mei help fan taal JavaScript string yn in rige te foegjen? Yn it proses fan it wurkjen mei rigen, de lingte fan de lingte automatysk ferbettert de kwaliteit, dat is wêrom wy moatte soargje derfan sels. It is nedich om noch in inkele detail - lengte eigendom is net beskikber foar allinnich- lêze, mar foar it record. As de kwaliteit lingte skaaimerk wearde dy't jout de omfang fan de hjoeddeiske, de array wurdt werombrocht ta in foarbeskaaide wearde. Eltse komponinten dy't net yn it nije oanbod fan Indices, recline, en harren wearden net ferlern, sels as jo letter werom werom lingte - wearden net opknapt wurde.

Heel gewoan leegje jo array as: foo.length = 0.

As de kwaliteit fan it run lingte grutter as syn hjoeddeistige wearde, oan 'e ein fan' e rige sil wêze nij, unbekend komponinten, dat sil tanimme it oan de ferlange omfang.

It wiskjen fan in rige is fan details

De delete operator jout it ûnderdiel fan 'e rige om undefined, mar it hieltyd bestiet yn dit gefal. As jo bydlkaiketema JavaSkript elemint fan de rige sadat de oerbleaune diel ferskode nei it frijkommende plak, jim moatte brûke ien fan de manieren om foarsizze de array. Metoade Array.shift () smyt in earste komponint, pop () - dźrmei komponint en in metoade splice () - ien komponint of sitte tusken oeral array.

multidimensional rigen

It liket derop dat wy begripe in bytsje, wat JavaScript. Twadiminsjonale rigen - dat moatte wurde beskôge fierder. Witte jo noch dat JavaSkript rigen kinne befetsje as ûnderdielen fan oare items? Dizze funksje wurdt brûkt foar de produksje fan multi-dimensionale rigen. Om besykje de komponinten yn in rige fan rigen is genôch te passen de beugels twa kear.

Associatieve rigen

No wy leare hoe't jo trademark brûkt JavaSkript Associatieve rigen. Te dwaan dat wy moatte sjen yn 'e teory: Associatieve rigen wurde soms neamd hash tabellen. Mei tank oan harren, yn plak fan de yndeks rigen binne tapast. It brûken fan sokke struktueren jin tinke oan it brûken fan 'e namme fan' e eigenskippen fan in ienfâldich foarwerp, mar yn dizze útfiering, de útfiering fan it wurk yn in rige is opmaak. Om't der gjin wegen fan manipulearjende JavaSkript rigen assosjatyf, se wurde brûkt folle minder faak as oars. Dêrby moat opmurken wurde dat se noch kin brûkber foar data opslach en it ferienfâldigjen opslach fan dielen, dat wurdt rieplachte.

Utfier array

En no sille wy stúdzje yn de JavaSkript systeem? Útfier array nei it dialoochfinster (op it skerm), en ek de útfier wearden fan de rige komponinten.

At it programma dat jo wolle werjaan de wearden fan alle ûnderdielen, dan is it handich te passen de ynstruksjes foar. Opfallend is dat de fariabele-counter regels foar gebrûk tagelyk as it ûnderdiel fan 'e array yndeks.

cleaning

Om te filterjen in rige is fan JavaSkript, jim moatte resetten syn lingte:

  • var myArray = [1, 2, 5, 23];
  • myArray.length = 0.

De folgjende toant de útfiering fan bestimming dúdlik (), yn in ramt, JavaSkript-Prototype:

  • dúdlik: function () {;
  • this.length = 0;
  • return dit;
  • }.

Tafoegjen of útnimmen fan komponinten

No, wy fierder te fierder ferkenne dit spannend JavaSkript taal. array elemint mooglik en ferwiderje en heakje deselde wize as konvinsjonele eigenskippen fan oare objekten. Mar der binne inkele ferskillen: tafoegjen numeryk eigenskippen kwaliteit lingte kin fariearje, mar yn 'e wiziging fan' e eigenskippen lingte kin wurde opheft numerike kwaliteit. Yn prinsipe, as de ynstallearjen algoritme yn rigen is as folget:

  • As jo tafoegje in ûnbekende digitale eigenskippen i, as de lingte is gelyk oan of minder as i, lingte is fêst fan doel te wêzen i + 1.
  • As jo feroarje de kwaliteit fan de lingte te fieren de neikommende stappen: as de tawiisd wearde is minder as nul, dan smyt RangeError. Elimineert alle numerike kwaliteit yndeksearret dy't gelyk oan de nije lingte, en grutter as.

Eins fuortsmite JavaSkript array elemint is simpel. Ommers, ek it ynstellen fan de lingte, jim moatte fuortsmite de "ekstra" ûnderdielen út it. It folget út dizze cleaning opsje array. As de fariabele wurdt tawiisd in nij lege slachoarder, om hokker reden, wienen net tefreden, mar it is nedich om te resetten de hjoeddeiske, de kwaliteit is genôch lingte te tawize in wearde fan nul.

unshift metoaden, shift, pop en push

Nettsjinsteande it feit dat de ûnderdielen fan de rige binne feroare mei de hân, in protte riede te brûken dit ynboude metoaden. It is dit nuânse garandearret it krekte wearde fan 'e kwaliteit en it gebrek oan lingte yn de rige kombinaasjes. Troch de wei, de kwaliteit fan de krekte lingte sil oerien mei it tal komponinten.

It proses ferhuzet nei druk op 'e ein fan' e array trochjûn items. Pop werom proses jout de finale komponint en smyt him.

Generaal yn Internet Explorer ûnder de achtste ferzje unshift kin weromkomme undefined, yn oare browsers - de nije wearde fan lingte. Sadat it werom wearde út de unshift better net te hoopjen.

De tafoeging en it opheffen fan parten yn 'e midden fan' e rige

As jo wiskje wolle in rige is fan JavaSkript, moatte jo nimme? It is bekend dat de metoade hat in hântekening splice Array.prototype.splice.

Hy jout har út 'e array deleteCount ûnderdielen, te begjinnen mei index start. As jo passearje mear as twa arguminten, alle folgjende arguminten yn de rige binne oardere yn plak fan 'e likwidearre. As start is minus, de yndeks dêr't te ferfetsjen it weromlûken sil wêze gelyk oan de lingte + begjinne. Werom nei de rige fan ôfstân eleminten plakfynt.

Yn feite, mei help fan de splice metoade, is it mooglik om te ferwiderjen komponinten út 'e midden fan in rige of heakje gjin getal oeral yn' e pronk.

Yn de simpelste belichaming, as it nedich is en meitsje de komponint mei yndeks i, de array moatte fersykje splice metoade mei parameters i en 1.

Yn prinsipe, de twadde opsje oan de splice metoade is net ferplichte, mar it hâlden en dragen fan 'e funksje mei ien argumint foar eltse blêder is oars.

Bygelyks, yn Firefox, Opera yn de lêste fariaasjes, al de details foar de ein fan 'e rige sille fuortsmiten wurde yn Safari en Chrome.

gjin inkele komponint is fuortwurke yn IE. De earste fariaasje is ûnmooglik om foarsizze it gedrach fan Opera - sille fuortsmiten wurde ien item mei index start - 1. Dêrom is it altyd nedich yn dizze metoade te stjoert op syn minst twa komponinten.

de kaaien

Fansels, learen JavaSkript, assosjative rigen, lykas sein earder, jim moatte ek net de holle sjoen. Dit is in abstrakt útsicht fan de ynformaasje (de ynterface foar it gegevens winkel), dy't stelt te bewarjen in pear fan de foarm "(toets, value)" en de eksploitaasje fan it tafoegjen fan in pear stipe, likegoed as wiskjen en sykjen fan 'e kaai pear:

- FINE (kaai).

- INSERT (value, toets).

- fuorthelje (kaai).

Oannomd wurdt dat yn in assosjative slachoarder kin net te bewarjen de twa pearen mei ferlykbere kaaien. Yn in pear k + vv is de wearde ferbûn mei kaai k. Semantyk, hjir mei it boppesteande operaasjes yn ferskate ymplemintaasje fan sokke rigen kin oars.

Sa, FIND operaasje (kaai) jout in wearde oan in beskaat toets, of in bepaald foarwerp UNDEF, betsjut dat de wearde oan in beskaat kaai, sûnder ferbining. Twa oare aksjes net werom (útsein gegevens op hoe súksesfol oft eksekutearre dit transaksje).

Überhaupt, yn termen fan interface, assosjative array dy't beskôge wurdt as in ienfâldich slachoarder, wêrby't as Indices kinne tapast wurde net allinnich hiel getal nûmers, mar ek oare types en wearden - bygelyks, linen.

Trouwens, stipe foar sokke rigen wurde behannele der binne in protte hege-nivo programmearring talen lykas PHP, Perl, Ruby, Python, Tcl, JavaSkript en oaren. Foar talen dy't hawwe gjin ynboude ark te wurkjen mei assosjatyf rigen, makke in ûnbidich tal realizations yn 'e foarm fan biblioteken.

In foarbyld fan in assosjative array kin tsjinje as in telefoanyske Directory. Yn dizze útfiering, de wearde wurdt ynsteld "F. IO + E ", en de kaai - it tillefoannûmer. Ien telefoannûmer is ien master, mar ien persoan kin eigen meardere nûmers.

assosjearre extension

Dêrby moat opmurken wurde dat de meast ferneamde útwreidings ûnder oaren de neikommende:

  • ELTSE - «walk» op alle skeelt twatallen.
  • HELDER - te wiskjen alle ynstjoerings.
  • MIN - te finen in pear mei de leechste kaai wearde.
  • MAX - te finen in pear mei de grutste kaai wearde.

Yn de lêste twa gefallen moatte jo op 'e kaaien waard jûn effekt ferliking.

Realisearjen fan Associatieve rigen

Der binne in soad ferskillende ymplemintaasje fan de assosjative array. De meast foarkommende útfiering kin basearre op in ienfâldige slachoarder waans ûnderdielen binne pearen (value, toets). Om rapper te sykjen funksjes, kinne jo regelje ûnderdielen fan 'e rige troch in kaai fine en útfiere mei help fan in binêr sykjen. Mar it sil tanimme it bedrach fan de tiid nedich om in nij pear, lykas sil moatte "triuwe" de rige ûnderdielen dy't ferskynde yn in lege sel yn te pakken in frisse rekôr.

De meast bekende útfiering, basearre op ferskate sykje beammen. Bygelyks, yn in typyske stúdzjeseal STL C ++ taal Trailers map wurdt útfierd op basis fan de swarte en mahony. Yn Ruby, stilen, Tcl, Python brûkt ien soarte fan hash tafels. Der binne oare útfiering.

Yn it algemien, elk útfiering hat syn eigen foar- en neidielen. It is wichtich dat alle trije operaasjes waarden folbrocht op trochsneed, en yn it slimste perioade fan nuânse oer (log n), dêr't n - aktuele oantal te bewarjen par. Foar opinoar sykje beammen (ynklusyf swarte en reade beammen), dy tastân is tefreden.

It is bekend dat yn de ymplemintaasje basearre op hash tafels, de trochsneed tiid wurdt definiearre as D (1), dat is better as yn 'e aksjes basearre op it sykjen beammen. Fansels, dit net garandearje in hege snelheid prestaasjes fan aparte operaasjes: Insert aksje tiid yn it slimste gefal, oantsjutten as O (n). INSERT proses wurdt útfierd foar in lange tiid as de plicht ferhâlding ta it heechste punt, en der is de needsaak om te rekonstruearjen fan de hash tafel yndeks.

Troch de wei, dy útspraken hash bad dat op basis dêrfan is it ûnmooglik om útfiere fluch ekstra aksje MAX, MIN, en in algoritme te sykjen alle bespaart pearen yn ôfnimmende folchoarder of opgeande kaaien.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 fy.atomiyme.com. Theme powered by WordPress.