Javascript масиви, експертни програмисти

Масивът е набор от ценности, които са идентифицирани с индекс.

Можете да използвате и синтаксис нов Строителя. Освен това, вие ще трябва да отпечатате повече от 5-9 символа ( "нов" не е задължително), има по-сериозен проблем в двусмислен смисъл:







Тези две определения приличат много, но имат много различни значения. Освен това, нека приемем, че някой иска да промени определението за втори, защото сега е необходимо да се определи само един от елементите, броят 8 в масив б. Много е вероятно, че той ще го промени, както следва (и кой е виновен?):

Разбира се, това не е това, което се изисква. Единственият начин да се уточни масив с няколко - да се използва буквално синтаксис (квадратни скоби).

Има ли предимства за използване на синтаксиса нов масив?

Какви типове данни може да съдържа множество?

Масивът може да включва всеки обект или елементарен тип. Няколко вида данни могат да бъдат едновременно в един масив.

Как да получите достъп елемент масив?

Елементите на масива са общи свойства на обекта, както и да имат достъп до тях, както и да свойствата. Тъй като свойствата на идентификатори винаги е низ, индексът на масива - по същия низ, а не брой. Въпреки това, когато използвате индекс записа (скоби) да се прилага за имота, той може да се използва и числена стойност, тъй като ще трябва да се преобразува в низ преводач. Достъп масив през точката няма да работи, тъй като identefikator свойства не могат да започват с цифра. (Нещо повече, това поведение е извлечена от правилата на имоти на обекта, не е просто масиви).

Как да се изпълнява за масива?

Тя обикновено има смисъл да се използва стандартен цикъл за:

Ако масивът е доста голям, може да сте загрижени за допълнителна работа при достъп array.length на всяка итерация. За да избегнете това, можете да определите дължината на масива в аванс:

Използването на израза за ... в нея не се препоръчва да обхождане на масива, тъй като можете да вземете enumerable свойства на прототипа (вж. По-долу)

Какви са качествата на един набор от уникални?

Най-важното свойство на масива - дължина (струнни инструменти и функции също са с дължина собственост, но дължината на масива е

В ECMA казва:
Array имот, който принадлежи към масива на обекта, винаги числено по-голям от името на който и да е имот, който е indeskom на масив.

С други думи, тя се изчислява като: (цифровата стойност на последния индекс) + 1

Масивите не са ограничени до дължината на горната част. Можете да добавите елемент, чийто индекс е по-голяма от (дължина - 1) и собствеността на дължина ще бъде променена в съответствие с определението по-горе. Масивите са с максимална дължина, но това е много голяма, така че дори не мисля за това.







Масивите винаги са обвързани по-долу от нула. Ако се опитате да добавите стойност с отрицателен показател, просто сложете нормална собственост на обекта (виж също "асоциативни масиви" по-долу)

Можете да манипулира съдържанието на масива, актуализиране на стойността на дължина. Ако umenshaetsya дължина собственост на масива, елементите с индекси по-големи или равни на новия дължината на масив са отстранени (това е единственият начин за премахване на индекса от масива - можете да премахнете елемента, но само стойността ще бъде изтрит, а индексът ще остане в сила - това е, набора Ви е "рядка" = там се появяват дупки)

От друга страна, ако се увеличи дължината на масива имот за стойността на п, а след това в масив ще се появи н нови елементи със стойност неопределено. Всъщност, нищо не се е променило, с изключение на дължината на дължината на масив.

Има два допълнителни свойства на псевдо-спектър: индекс и вход. Тези свойства се появяват в масиви, създадени с помощта на регулярни изрази.

Какви методи са наследени от Array.prototype?

Oektov Array предоставя голям брой много полезни инструменти в големи подробности счита функция ECMA5. повечето от които може да сте запознати. Следните методи масиви са на разположение за всички най-нови версии на браузъри.

CONCAT ПАВ копия масив и добавя към него аргументите

присъединят съчетава елементи на масив в низ, разделени с аргумент

измести премахва и се връща на първия елемент

поп премахва и връща последния елемент

unshift добавя аргументи в началото на масив

тласък добавя аргументи към края на масива

обратно обръща реда на елементи в масива, без да го копиране

режа ПАВ копия част на масива - елементите с индекс започне до края, без да се включва в края

снаждане - премахва тези елементи от масив, заменяйки ги с допълнителни аргументи

подредени - Сортира масив, без да го копиране, евентуално при използване на функция за сравнение като аргумент

ToString причини да се присъединят без аргумент

indexOf връща индекса на първия елемент, равна на посочената стойност, или -1, ако не е намерена

lastIndexOf връща индекса на последния елемент, равна на посочената стойност, или -1, ако не е намерена

всеки се връща истина, ако премина функцията връща вярно за всеки елемент на масива

някои vozvradaet вярно, ако я пусна към функцията връща вярно за най-малко един от елементите на масива

forEach използва преминал функцията на всеки елемент на масива

Карта създава нов масив, който съдържа резултатите от предадена функция към всеки елемент на масива

филтър създава нов масив, който съдържа всички необходими елементи, за които предават функция връща истинското

намаляване прилага функция едновременно на двете стойности на масива (от ляво на дясно), така че масивът е сведена до една стойност (забележка: Намалете имали различна стойност в предишните версии Prototype.js)

reduceRight прилага функция едновременно на двете стойности на масив (от дясно на ляво), така че матрицата се намалява до една стойност

Как да знаем дали масива тип обект?

А какво да кажем за "асоциативни масиви"?

В действителност, в този код (въпреки че не е правилно) неправилна употреба на обект масив. Чрез масив не се добавя никакъв елемент (array.length е 0). Всичко, което сме направили е назначена на свойствата на обикновен обект - в действителност, ние създадохме хеш-таблица.

За да илюстрирам това, ние можем да се замени Array обект и да е друг обект и да получите един и същ резултат.

Освен това, създаването на хешове на обект Array потенциално опасно. Ако някой ще се разшири Array.prototype enumerable свойства (например, че може да се направи с Prototype.js библиотека), а след това те ще бъдат включени в една линия за ... в, унищожаване на вашата логика (или поне ще трябва да се използва неефективно метод на hasOwnProperty) ,

Създаване на хешове на обект обекта на и никъде другаде, тъй като споразумението Object.prototype не може да бъде удължен.

Вижте също: