KomputilojProgramado

JavaScript-tabelo kaj lia kreo. Pri JavaScript tabeloj

En ĉi tiu artikolo ni esploros pri JavaScript-tabelo, liaj komponantoj. JavaScript estas perfekta scenaro orientita lingvo desegnita por programado. Fakte, implementa la ECMAScript lingvo (normo ECMA-262).

De JavaScript? Ĝi estas uzata kiel enigita lingvo por difini la vojon de la programo al la temo aplikon. Ĝi troviĝas en la retumilo: ĝi uzas tie kiel skripta lingvo, kiu donas retpaĝoj interaga.

La ĉefaj arkitekturaj karakterizaĵoj de ĉi tiu produkto estas dinamika kaj malforta tajpado, avtoupravlenie memoro ideala programado funkcioj kiuj estas objektoj de la unua malŝarĝo.

Efektive, en JavaScript influis malsamaj kialoj, ĉar la evoluo kreus lingvo simila al Java, sed facile uzebla de programistoj. Parenteze, la JavaScript lingvo ne posedas ajnan entrepreno aŭ organizo kiu faras malsamaj de kelkaj programado stiloj uzata de ttt programistoj.

Ni notu, ke JavaScript - registrita varmarko de Oracle Corporation Grupo.

Kio estas tabelo?

Nomita tabelo datumoj tipo, kiu stokas numeritaj valorojn. Ĉiu tia valoro estas nomata kiel la tabelo komponanto kaj la cifero de kiu ligas la komponanto, nomata indekso. JavaScript-tabelo de netipigita. Tio signifas, ke la solidaj partoj povas havi ajn tipo, kun malsamaj partoj apartenantaj al la sama tabelo, havas tute malsamajn tipojn.

Krome, JavaScript-tabelo estas dinamika, kaj oni diras ke fiksa grandeco ne devas esti deklarita. Post aldoni novajn partojn en ajna momento.

solida produktado

Uzante la JavaScript lingvo por krei tabelon sufiĉe malfacila. Estas du metodoj por tio. La unua implikas la produktadon de tabelo uzante laŭvortan - de rektaj krampoj, ene kiu estas metita listo de artikoloj, dividita per komoj.

  • var malplena = []; // malplena tabelo;
  • var numers = [4, 1, 2, 5]; // tabelo kun kvin diĝita komponantojn;
  • var malsamoj = [1.5, falsa, «teksto»]; // tabelo kun tri elementoj de malsamaj tipoj.

Kutime, ĝi ne estas postulata por esti simplaj valoroj (vicoj kaj nombroj). Ĝi povas ankaŭ esti iu alia esprimoj, ekzemple, objekto literaloj, aliaj funkcioj kaj tabeloj.

La dua maniero por krei tabelon diseñador estas nomi array (). Por inviti lin al unu el tri metodoj:

  • Voku dezajnisto sen argumentoj: var b - nova array (). Ĝi provizas por la kreo de malplena aro ekvivalenta al malplena laŭvortan [].
  • La diseñador eksplicite preciziganta la valoro n de la tabelo komponantojn: var b = nova array (1, 3, 5, 8, "linio», vera). En ĉi tiu kazo, la diseñador prezentita listo de argumentoj, kiuj estas transformita en novan tabelo komponantojn. Argumentoj estas skribitaj al la tabelo estas la loko kie indikita.
  • Difinante la amplekson por plua atribui valorojn. Vi faras tion per specifante la malkaŝo tabelo kelkaj enmetitaj en krampojn: var b = nova array (5). Tiu metodo de detección implikas la atribuo tabelo postulata kvantoj de eroj (ĉiu kies estas listigita kiel nedefinita) kun ebleco de atribui valorojn en prezento. Tiu formo estas kutime uzata por antaŭ-rezervi la Javascript-tabelo kies longo estas konata anticipe.

Registrado, legante kaj aldonante detalojn de la tabelo

Akiri al la komponantoj de la tabelo povas esti per operatoro []. Parenteze, ĉiuj la eroj en JavaScript, komencante de nulo, estas numeritaj. Akiri la necesajn elementojn, indiki lian numeron en rektaj krampoj. Kiel ĝenerala regulo, aĵoj povas esti ŝanĝita. Al JavaScript por aldoni al la tabelo, estas sufiĉa atribui novan valoron.

Ni notu, ke en JavaScript tabeloj povas stoki ajnan numeron de elementoj de ajna speco.

La longo de la tabelo

Do ni scias kion JavaScript. longo de la tabelo ĝenerale estas interesa fenomeno. Ni konsideras en pli detalo. Ĉiuj rangoj estas konstruitaj uzante array Dizajnisto () kaj detektita tra laŭvortan tabelo havas specifan longo propraĵo, kiu retiras la totala nombro de elementoj avaraj. Ekde la tabelo povas esti necerta de la detaloj (nedifinitaj La designado), pli preciza esprimo sonas tiel: Kvalito longo estas ĉiam pli granda de unu ol la plej granda nombro (indekso) de la tabelo komponanto. Kvalito longo estas ĝustigitaj aŭtomate, restanta preciza je la apero de tabelo de novaj detaloj.

Por montri la fina ero de tabelo, vi povas uzi la longo proprieto.

La lasta parto estas la indekso oni malpli ol la grandeco de la tabelo. Post la rakontas malantaŭen komenci ĉiam de nulo. Ho, tiu JavaScript! La longo de la tabelo dependas de lia ĝusta numero de elementoj. Tial, se vi ne scias, kiom da tie devus esti, sed vi devas turni al la fina ero de la tabelo, estas necese apliki la rekordon: v.length - 1.

Persisti la aro de partoj

Tre ofte, la longo propraĵo estas uzata ankaŭ persisti super la tabelo de partoj en la ciklo:

  • var fruktoj = [ «frago", "persiko," "pomo", "banano"];
  • por (var i = 0; i
  • document.write (fruktoj [i] + «...»).

En ĉi tiu ekzemplo ŝajnas ke la komponantoj estas aranĝitaj kontinue kaj komenci kun la unua parto, kiu havas indekson nulo. Se ĉi tiu ne estas la kazo, antaŭ nomante ĉiu elemento de la tabelo devas esti kontrolata se ĝi estas difinita.

La ciklo estas ankaŭ iam uzata por pravalorizi la komponantojn.

La kresko kaj la tranĉo tabelo

Mi scivolas kiom uzanta lingvon JavaScript kordo en tabelo por aldoni? En la procezo de labori kun sensilo, longo longo aŭtomate plibonigas la kvaliton, Kiu estas kial ni devas prizorgi ĝin mem. Estas necese memori ununuran detalon - longo propraĵo ne haveblas por nur legado, sed por la registro. Se la kvalito longo atributo valoro kiu donas la grandeco de la fluo, la tabelo estas reduktita al antaŭdeterminita valoro. Ajna komponantoj kiuj ne estas inkluditaj en la nova gamo de indicoj, sidigxu, kaj iliaj valoroj estas perditaj, eĉ se vi poste revenos reen longo - valoroj ne revenos.

Tute simple purigi la tabelo kiel: foo.length = 0.

Se la kvalito de kuri longo pli granda ol ĝia nuna valoro, ĉe la fino de la tabelo estos nova, neidentigita komponantojn, kiu pliigos ĝin al la deziratan grandecon.

Forigo tabelo de detaloj

La forigo operatoro indikas la komponanto de la tabelo por nedifinita, sed daŭre ekzistas en ĉi tiu kazo. Se vi volas forigi la JavaScript elemento de la tabelo por ke la cetera parto ŝanĝiĝis al la vaka loko, vi devas uzi unu el la manieroj antaŭdiri la tabelo. Metodo Array.shift () forigas unua komponanto, pop () - finanta kompono kaj metodon splice () - unu komponanto aŭ oscili ie tabelo.

matricoj multidimensionales

Ŝajnas, ke ni komprenas iom, kio JavaScript. Dudimensia tabeloj - tio devas esti konsiderata plu. Ĉu vi memoras, ke JavaScript tabeloj povas enhavi kiel komponantojn de aliaj aĵoj? Tiu trajto estas uzata por la produktado de multdimensia tabeloj. Viziti la komponantojn en tabelo de tabeloj sufiĉas apliki la krampoj dufoje.

asociaj tabeloj

Nun ni lernos kiel marko uzas JavaScript asociaj tabeloj. Por fari tion ni devas rigardi en la teorio: asociaj tabeloj estas foje nomata hash tabloj. Danke al ili, anstataŭ la indekso vicoj aplikas. La uzo de tiaj strukturoj memoras la uzon de la nomo de la propraĵoj de simpla objekto, sed en tiu ĉi enkorpiĝo, la rendimento de laboro en tabelo formato. Ekde estas ne vojoj de manipulanta JavaScript arrays asociaj, estas uzitaj multe malpli ofte ol kutime. Ni notu, ke ili ankoraŭ povas esti utila por stokado de datumoj kaj simpligi stokado de partoj, kiuj estas alireblaj.

eligo tabelo

Kaj nun ni studas en la JavaScript sistemo? Eligo tabelo por la dialogo (sur la ekrano), kaj ankaŭ la produktado valoroj de la tabelo komponantojn.

Se la programo vi volas montri la valorojn de ĉiuj komponantoj, do ĝi estas oportuna por apliki la instrukciojn por. Interese, la variablo-nombrilo reguloj por uzo samtempe kiel la komponanto de la tabelo indekso.

purigado

Por filtri tabelo de JavaScript, vi devas reagordi ĝia longo:

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

La jena montras la efektivigo de destino klara (), en kadro, JavaScript-Prototipo:

  • klaraj: funkcio () {;
  • this.length = 0;
  • reveni ĉi;
  • }.

Aldono kaj forigante komponantojn

Nu, ni daŭre plu esplori tiun ekscita JavaScript lingvo. tabelo elemento ebla kaj forigi kaj aldoni same kiel konvencia ecoj de aliaj objektoj. Sed estas iuj diferencoj: aldonante nombra ecoj kvalito longo povas varii, sed en la modifo de la ecoj longo povas esti eliminita nombra kvalito. Principe, kiel la instali algoritmo en tabeloj estas la jena:

  • Kiam aldonante cifereca nekonata propraĵoj de mi, se la longo egalas malpli ol mi, longeco estas kialigita esti i + 1.
  • Kiam vi ŝanĝas la kvaliton de longo plenumi la sekvajn paŝojn: se la asignita valoro estas malpli ol nulo, tiam ĵetas RangeError. Forigas ĉiujn nombra kvalito indeksoj, kiuj estas egalaj al la nova longo, kaj pli granda ol.

Efektive forigi JavaScript tabelo elemento estas simpla. Ja eĉ agordi la longo, vi devas forigi la "ekstra" komponantojn de ĝi. El tio sekvas, purigado opcio tabelo. Se la variablo estas asignita nova malplena tabelo, Por ajna kialo, ne estis kontenta, kaj ĝi estas necesa por reagordi la fluo, lia kvalito estas sufiĉa longo atribui valoron de nulo.

unshift metodoj, movo, popmuziko kaj puŝon

Malgraŭ tio, ke la komponantoj de la tabelo estas ŝanĝita permane, multaj rekomendas uzi ĉi enkonstruita metodoj. Estas ĉi nuancon garantias la ĝustan valoron de la kvalito kaj de la manko de longo en la tabelo pasejoj. Parenteze, la kvalito de ĝusta longo respondos al la nombro de komponantoj.

La procezo moviĝas puŝi la fino de la tabelo transdonitaj erojn. Pop reen procezo donas la fina komponanto kaj forigas ĝin.

Ĝenerale en Esplorilo sub la oka versio unshift povas reveni nedefinita, en aliaj retumiloj - la nova valoro de longo. Tiel ke la reveno valoro de la unshift bona ne esperas.

La aldono kaj forigo de partoj en la mezo de la tabelo

Se vi volas forigi tabelo de JavaScript, vi devas preni? Ĝi scias ke la metodo havas subskribon splice Array.prototype.splice.

Li retiriĝas de la tabelo deleteCount komponantojn, komencante kun indekso komenco. Se vi pasas pli ol du argumentojn, ĉiuj postaj argumentoj en la tabelo estas aranĝitaj en loko de la likvidita. Se komenco estas minus, la indekso en kiu rekomenci la retiro estos egala al la longo + komenci. Revenante al la tabelo de foraj elementoj okazas.

Fakte, uzante la splice metodo, eblas forigi komponantojn de la mezo de tabelo aŭ aldoni ajnan numeron ie ajn en la tabelo.

En la plej simpla personigo, se ĝi necesas forigi la komponanto kun indekso i, la tabelo devas peti splice metodo kun parametroj i kaj 1.

Principe, la dua opcio je la splice metodo ne estas deviga, sed la konduto de la funkcio kun unu argumento por ĉiu retumilo estas malsamaj.

Ekzemple, en Firefox, ĝi Operacias en la lasta variadoj, ĉiuj detaloj antaŭ la fino de la tabelo estos forigita en Safari kaj Chrome.

neniu sola komponanto estas forigita en IE. La unua variaĵo estas neeble antaŭdiri la konduton de Opero - estos forigita unu ero kun indekso komenco - 1. Sekve ĝi estas ĉiam necesa en ĉi tiu metodo por transdoni almenaŭ du komponantoj.

la klavojn

Kompreneble, lernante JavaScript, asociaj tabeloj, kiel menciis pli frue, vi devus ankaŭ ne preteratenti. Tiu estas abstrakta vido de la informo (la interfaco al la datumoj vendejo), kiu permesas savi paro de la formo "(ŝlosilo, valoro)" kaj la operacio de aldono paro da subteno, kaj ankaŭ viŝita kaj serĉante la ŝlosilon paro:

- Trovi (ŝlosilo).

- INSERT (valoro, ŝlosilo).

- REMOVE (ŝlosilo).

Oni kredas, ke en asocieca tabelo ne povas savi la du parojn kun similaj klavoj. En paro de k + vv estas la valoro asociita kun ŝlosilo k. Semantiko kaj tie kun la supre operacioj en diversaj implementaciones de tiaj tabeloj povas esti malsamaj.

Tiel, TROVOS operacio (ŝlosilo) resendas valoro asociita kun specifa klavo, aŭ specifa objekto undef, kio signifas, ke la valoro asociita kun specifa klavo, senkonekta. Du aliaj agoj ne revenas (krom datumoj sur se la operacio estis sukcesa).

Ĝenerale, laŭ interfacon, asocieca tabelo kiu estas konsiderata kiel simpla tabelo, kiu kiel indeksoj povas esti aplikita ne nur entjeraj nombroj sed aliaj tipoj kaj valoroj - ekzemple, linioj.

Por iu, subteno por tiaj tabeloj estas traktataj estas multaj altnivela programlingvoj kiel ekzemple PHP, Perl, Ruby, Python, Tcl, JavaScript kaj aliaj. Por lingvoj, kiuj ne havas enkonstruita iloj labori kun asociaj tabeloj, kreita enorma kvanto de komprenoj en la formo de bibliotekoj.

Ekzemplo de asocieca tabelo povas servi kiel telefona dosierujo. En ĉi tiu personigo, la valoro estas metita "F. IO + e ", kaj la ŝlosilo - la telefonnumeron. Unu telefonnumero estas mastro, sed unu persono povas posedi plurajn numerojn.

asociita etendo

Ni notu, ke la plej konata etendaĵoj inkludas la sekvajn:

  • ĈIU - «promeno» en ĉiuj ŝparas paroj.
  • CLEAR - forviŝi ĉiujn kontribuojn.
  • MIN - por trovi paron kun la plej malalta klavo valoro.
  • MAX - por trovi paron kun la plej granda ŝlosilo valoro.

En la lastaj du kazoj vi devas sur la klavoj indikitaj komparo efiko.

Efektivigo de asociaj tabeloj

Estas multaj malsamaj implementaciones de la asocieca tabelo. La plej ofta efektivigo povas esti bazita sur simpla tabelo kies komponantoj estas la paroj (valoro ŝlosilo). Por plirapidigi la serĉo funkcioj, vi povas aranĝi komponantojn de la tabelo de klavo trovo kaj efektivigu uzanta duuma serĉo. Sed ĝi pliigos la kvanton de tempo postulata por aldoni novan paron, kiel bezonos "puŝi" la tabelo komponantoj kiuj aperis en malplena ĉelo paki freŝan rekordon.

La plej bona konata efektivigo, bazita sur malsamaj serĉo arboj. Ekzemple, en tipa legejo STL C ++ lingvo Trailers mapo estas implementado surbaze de nigraj kaj mahagono. En Ruby, stiloj, Tcl, Python uzas unu tipo de hash tabloj. Estas aliaj efektivigo.

Ĝenerale, ĉiu efektivigo havas propran avantaĝojn kaj malavantaĝojn. Gravas ke ĉiuj tri operacioj estis plenumita mezume, kaj en la plej malbona periodo de nuancon pri (log n), kie n - nuna nombro savi la paro. Por interkonsentita serĉo arboj (inkluzive de nigraj kaj ruĝaj arboj), tiu kondiĉo estas kontentigita.

Ĝi scias ke en implementaciones surbaze hash tabloj, la meza tempo estas difinita kiel D (1), kiu estas pli bona ol en la agoj bazitaj sur la serĉo arboj. Kompreneble, tio ne garantias altrapida efikeco de apartaj operacioj: INSERT ago tempo en la plej malbona kazo, signifita kiel O (n). INSERT procezo estas farita por longa tempo, kiam la devo kvociento atingas la plej altan punkton, kaj estas la neceso rekonstrui la hash tablo indekso.

Parenteze, ĉi tiuj deklaroj hash malbona ke sur tiu bazo estas neeble plenumi rapida aldona ago MAX, MIN, kaj algoritmo por serĉi ĉiun ŝparas paroj en malkreskanta ordo aŭ suprenirante ŝlosilojn.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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