Компјутери, Програмирање
Го вклучите Javascript-низа и неговото создавање. Сите JavaScript низи
Во оваа статија ние ќе ја разгледаме низата JavaScript, нејзините компоненти. JavaScript е идеално ориентиран скриптен јазик дизајниран за програмирање. Всушност, го имплементира ECMAScript јазикот (ECMA-262 стандард).
Каде се користи JavaScript? Се користи како вграден јазик со цел да се одреди патеката на софтверот до објектот на апликацијата. Тоа може да се најде во прелистувачите: таму се користи како скриптен јазик кој им дава интерактивност на веб-страниците.
Најважните архитектонски карактеристики на овој производ се динамично и слабо пишување, автоматско управување со меморијата, идеално програмирање, функции кои се објекти на првата категорија.
Во принцип, JavaScript беше под влијание на различни причини, бидејќи во развој тие сакаа да создадат јазик сличен на Јава, но лесен за употреба од страна на програмерите. Патем, јазикот на JavaScript не е во сопственост на некое претпријатие или организација, што го прави за разлика од голем број на софтверски стилови што ги користат веб програмери.
Треба да се напомене дека JavaScript е регистриран заштитен знак на Oracle Corporation.
Што е низа?
Низата е тип на податок кој ги зачувува нумерираните вредности. Секоја таква вредност се нарекува низа компонента, а бројот на кој е поврзан компонентата се нарекува индекс. Низата на JavaScript е непроменета. Ова значи дека деталите на низата може да имаат било кој тип, а различни делови кои припаѓаат на истата низа имаат сосема различни типови.
Покрај тоа, низата JavaScript е динамична, што значи дека нема потреба да се објавува фиксна големина. Впрочем, можете да додадете нови делови во секое време.
Производство на низи
Користејќи го јазикот на JavaScript, создавањето низа воопшто не е тешко. Постојат две методи за ова. Првиот вклучува правење низа со буквални квадратни загради, во која е листа на делови, одделени со запирки.
- Var празна = []; // празно низа;
- Var numers = [4, 1, 2, 5]; // низа со пет дигитални компоненти;
- Var diff = [1.5, false, "text"]; // низа со три елементи од различни видови.
Типично, не бара вредностите да бидат едноставни (жици и броеви). Исто така, може да бидат и други изрази, на пример, предметни литератури, други функции и низи.
Вториот начин да се создаде низа е да се јавите на дизајнерот Array (). Можете да го поканите на три начини:
- Повикувајќи го дизајнерот без аргументи: var b - нова Array (). Тука се создава празен низа која е еквивалентна на празна буква [].
- Конструкторот експлицитно ги има вредностите на n компонентите на низата: var b = new Array (1, 3, 5, 8, "string", true). Во овој случај, дизајнерот е претставен со листа на аргументи кои се претвораат во компоненти на нова низа. Аргументите се запишани во низата на локацијата во која се наведени.
- Дефиницијата на областа за последователна атрибуција на вредности. Ова се прави со наведување на низа од еден број затворен во загради: var b = нова Array (5). Овој метод на откривање вклучува распределба на низа од потребниот број на компоненти (од кои секоја е наведена како недефинирана) со можност за последователно наведување на вредности во процесот на презентирање. Таквата форма обично се користи за претходно поставување на низа на Javascript чија должина е позната однапред.
Пишување, читање и додавање детали за низата
Можете да пристапите до компонентите на низата користејќи го [] операторот. Патем, сите компоненти во JavaScript, почнувајќи од нула, се нумерирани. За да го добиете потребниот елемент, неговиот број е означен во квадратни загради. Како по правило, деталите можат да се променат. И за да додадете JavaScript во низата, само доделите нова вредност.
Треба да се напомене дека во низи на JavaScript можете да зачувате било кој број на елементи од било кој вид.
Должина на низата
Значи, знаеме што е JavaScript. Должината на низата е генерално интересен феномен. Ајде да го разгледаме подетално. Сите низи, дизајнирани со помош на дизајнерот Array (), и идентификувани од низата буквални, имаат специфична должина својство кое се потсетува на вкупниот број на елементи кои се зачувани. Бидејќи може да има недодефинирани детали во низата (означена како недефинирана), попрецизен израз звучи вака: квалитетот на должината е секогаш поголем за еден од најголемиот број (индекс) од компонентата на низата. Квалитетната должина се прилагодува автоматски, останува точна кога се појавуваат нови делови во низата.
За прикажување на последната компонента на низата, можете да го користите должината на имотот.
Последниот детаљ има индекс еден помалку од големината на низата. Впрочем, броењето започнува секогаш од нула. Ох, овој JavaScript! Должината на низата зависи од точниот број на елементи. Значи, ако не знаете колку од нив треба да биде, но треба да се однесувате на елементот за задна врата на низата, треба да го примените записот: v.length - 1.
Низа на низа детали
Многу често, вредноста на имотот се користи за да се набројат деталите на низата во јамка:
- Var плодови = ["јагода", "праска", "јаболко", "банана"];
- За (var I = 0; i <овошјето должина, јас ++);
- Document.write (плодови [i] + "...").
Во овој пример, се чини дека компонентите се ставаат постојано и почнуваат со првиот дел кој го поседува индексот на нула. Ако ова не е случај, пред да се повика секој елемент од низата, потребно е да се провери дали е дефинирано.
А јамка, исто така, понекогаш се користи за иницијализација на компоненти.
Зголемување и скратување на низа
Се прашувам како користењето на JavaScript-стрингот во низата за да додадете? Во процесот на работа со низи, квалитетот на должината на должината автоматски се подобрува, затоа мораме самите да се грижиме за тоа. Потребно е да се потсетиме на еден детаљ: должината на имотот не е само читање, туку и за пишување. Ако на должината на квалитетот е доделена вредност која е инфериорна во однос на сегашната големина, тогаш низата е намалена на одредената вредност. Сите компоненти кои не се во новиот опсег на индекси се преклопени, а нивните вредности се губат, дури и ако подоцна да се врати должината назад - вредностите не се враќаат.
Лесно е да се исчисти низата како ова: foo.length = 0.
Ако квалитетот на должината е поголем од неговата сегашна вредност, на крајот од низата се појавуваат нови деинсталирани делови, што ќе го зголеми до саканата големина.
Бришење детали за низата
Операторот за бришење одредува недефинирана вредност во компонентата на низата, и таа продолжува да постои. Ако сакате да избришете елемент од полето за JavaScript, така што останатите детали ќе бидат преместени во празно место, треба да користите еден од предвидливите методи на низата. Методот Array.shift () ја елиминира првата компонента, pop () е компонента која го прекинува, а методот splice () е еден или низа од компоненти било каде во низата.
Низи се повеќедимензионални
Се чини дека ние сме сортирани малку за тоа што JavaScript е. Дво-димензионални низи - тоа е она што треба да се разгледа понатаму. Дали се сеќавате дека низите на JavaScript можат да содржат и други елементи како компоненти? Оваа функција се користи за производство на повеќедимензионални низи. За да ги посетиме компонентите во низа низи, доволно е двапати да се применуваат квадратните загради.
Асоцијативни низи
И сега ние ќе научиме како се користат асоцијативните низи на заштитните знаци на JavaScript. За ова, треба да ја разгледаме теоријата: асоцијативните низи понекогаш се нарекуваат хаш маси. Тие користат низи наместо индекси. Употребата на такви структури личи на употребата на името на имотот на едноставен објект, но во оваа верзија при изведување на работа во низа формат. Бидејќи JavaScript нема никаков начин за ракување со асоцијативни низи, тие се користат многу поретко отколку конвенционалните. Треба да се напомене дека тие се уште можат да бидат корисни за складирање на податоци и олеснување на запомнувањето на деталите што ви требаат за пристап.
Излез на низата
И сега, што ќе научиме во системот на JavaScript? Изнесување на низа во дијалог-кутија (на екранот на мониторот), како и прикажување на вредностите на компонентите на низата.
Ако програмата треба да ги прикаже вредностите на сите компоненти, тогаш е погодно да се користи изјавата за. Интересно е дека променливата-бројач на правилата се користи како индекс на компонентата на низата.
Чистење
Со цел да се филтрира низата на JavaScript, треба да ја исчистите должината:
- Var myArray = [1, 2, 5, 23];
- MyArray.length = 0.
Следното го прикажува спроведувањето на јасна () задача во добро познатата рамка за прототип на прототип:
- Исчисти: функција () {;
- This.length = 0;
- Врати го ова;
- }.
Додавање и отстранување на компоненти
Па, ние продолжуваме да го проучуваме овој интересен JavaScript јазик. Елементот на низата може да биде избришан и додаден на ист начин како и вообичаените својства на други објекти. Но, постојат некои разлики: кога додавате нумерички својства, квалитетот на должината може да се промени, и кога својството на должина е изменето, може да се отстранат нумерички квалитети. Во принцип, алгоритам за поставување на квалитети на низи е како што следува:
- Кога додавате непозната дигитална особина i, ако должината е еднаква или помала од i, должината е дефинирана како i + 1.
- Кога го менувате квалитетот на должината, се извршуваат следните дејства: ако доделената вредност е помала од нула, RangeError се фрла. Елиминирање на сите нумерички квалитети и индекси, кои се еднакви на новата должина и кои се поголеми.
Во принцип, отстранувањето елемент од низата JavaScript не е тешко. По сите, дури и поставување на должината, треба да ги отстраните "екстра" компонентите од неа. Оттука и можноста за чистење на низата. Доколку доделената променлива од празна нова низа поради некоја причина не се поклопи, но неопходно е да се поништи сегашната, доволно е да се додели вредноста нула до нејзиниот квалитет.
Методите unshift, shift, pop и push
Иако компонентите на низата се менуваат рачно, многумина препорачуваат да ги користите вградените методи за ова. Тоа е оваа нијанса која ја гарантира правилната вредност на должината на квалитетот и отсуството на пропусти во низата. Патем, точната должина ќе одговара на бројот на компоненти.
Методот на притискање ги пренесува пренесените делови до крајот на низата. Методот pop ја враќа задна компонента и го брише.
Општо земено, во Internet Explorer под осмата верзија, unshift може да се врати недефинирано, во други прелистувачи - нова вредност на должина. Па затоа е подобро да не се потпирате на вредноста на враќањето од unshift.
Додавање и отстранување на делови во средината на низата
Ако треба да избришете низа JavaScript, што треба да правам? Познато е дека методот на сплетка има потпис Array.prototype.splice.
Ги отстранува од низата избришувањето на компонентите, почнувајќи од почеток. Ако се предадат повеќе од два аргументи, тогаш сите последователни аргументи во низата се поставени наместо оние кои биле елиминирани. Ако проектот е минус, тогаш индексот од кој повлекувањето ќе продолжи ќе биде еднаков на должината + почеток. Враќањето во низата е од оддалечени елементи.
Всушност, користејќи го методот на сплетка, можете да ги отстраните компонентите од средината на низата или да додадете било кој број на кое било место во низата.
Во наједноставната верзија, ако сакате да отстраните компонента со индексот i, треба да го прашате низата за методот на сплетка со параметрите i и 1.
Во принцип, вториот параметар на методот на сплетка не е задолжителен, но однесувањето на функција со еден аргумент во секој прелистувач е различно.
На пример, во Firefox, во најновите верзии на Opera, Safari и Chrome, сите детали ќе бидат отстранети до крајот на низата.
Во IE, ниедна компонента нема да биде отстранета. Во првите варијации на Opera, однесувањето не може да се предвиди - ќе се отстрани една ставка со почетниот индекс, па затоа секогаш е потребно да се префрлат најмалку две компоненти на овој метод.
Клучеви
Се разбира, при проучувањето на JavaScript, асоцијативните низи, како што споменавме порано, исто така, не смеат да се занемаруваат. Ова е апстрактен тип на информации (интерфејс на складиштето на податоци), кој ви овозможува да зачувате парови од формата "(клуч, вредност)" и да ги поддржувате операциите за додавање на пар, како и бришење и пребарување на пар клучеви:
- Најдете (клуч).
- Внеси (вредност, клуч).
- ОТСТРАНУВАЈ (клуч).
Се претпоставува дека два пара со слични клучеви не можат да се зачуваат во асоцијативната низа. Во пар, k + vv се нарекува вредност поврзана со клучот k. Семантиката и имињата на горенаведените операции во различни имплементации на такви низи може да бидат различни.
Значи, акцијата FIND (key) ја враќа вредноста поврзана со наведениот клуч или некој специфичен UNDEF објект, што значи дека недостасува вредноста поврзана со наведениот клуч. Две други акции не враќаат ништо (освен дали операцијата е успешна).
Општо земено, од аспект на интерфејсот, асоцијативната низа е погодно да се смета како едноставна низа во која не само што може да се користат цели броеви како индекси, туку и други видови вредности - на пример, жици.
Патем, поддршката за ваквите низи е достапна во многу толкувани софтверски јазици на високо ниво, како што се PHP, Perl, Ruby, Python, Tcl, JavaScript и други. За јазици кои немаат вградени алатки за работа со асоцијативни низи, во библиотеките е создаден огромен број имплементации.
Пример за асоцијативна низа може да биде телефонски именик. Во оваа варијанта, вредноста е комплексот "Ф. IO + адреса ", и клучниот телефонски број. Еден телефонски број има еден господар, но едно лице може да поседува неколку броеви.
Асоцијативни екстензии
Треба да се напомене дека најпознатите проширувања ги вклучуваат следните дејства:
- Секоја - "прошетка" низ сите зачувани парови.
- CLEAR - избришете ги сите записи.
- MIN - пронајдете го пар со најмала клучна вредност.
- MAX - најдете ја двојката со највисока клучна вредност.
Во последните две варијанти, треба да го наведете споредбеното дејство на копчињата.
Спроведување на асоцијативни низи
Постојат многу различни имплементации на асоцијативната низа. Најчестата имплементација може да се базира на едноставна низа, чии компоненти се парови (вредност, клуч). За да ги забрзате активностите за пребарување, можете да ги организирате компонентите од оваа низа со клуч и да направите пребарување користејќи бинарно пребарување. Но, ова ќе го зголеми времето потребно за додавање на нов пар, бидејќи ќе биде неопходно да се "издвојат" компонентите на низата за да се спаси свеж рекорд во појавината празна ќелија.
Најпознатите имплементации се базираат на различни дрва за пребарување. На пример, во типичната СТЛ читална САЛ, картата на мапи се спроведува врз основа на црно-црвено дрво. Во стилови Ruby, Tcl, Python се користи еден од типовите хеш табели. Постојат и други имплементации.
Генерално, секоја имплементација има свои недостатоци и предности. Важно е сите три дејства да се извршуваат и со просечна и најлоша нијанса за периодот О (log n), каде што n е моменталниот број спарени парови. За координирани дрва за пребарување (вклучително и за црно-црвени дрвја) оваа состојба е исполнета.
Познато е дека во имплементации базирани на хаш маси, просечното време се дефинира како Д (1), што е подобро отколку во акции врз основа на дрва за пребарување. Се разбира, тоа не е гаранција за брзи перформанси на одделни операции: INSERT време акција во најлош случај, означена како O (n). INSERT процес се врши за долго време, кога стапката на должност достигне највисоката точка, и постои потреба да се реконструира индекс хаш табелата.
Патем, овие изјави хаш лошо што врз основа на тоа што е невозможно да се направи брзо дополнителна акција Max, Min, и алгоритам за пребарување на сите заштедува парови во опаѓачки редослед или растејќи клучеви.
Similar articles
Trending Now