Сборка от 17 марта 2017 г


Внутреннее устройство массива



Download 9,9 Mb.
bet116/349
Sana26.04.2022
Hajmi9,9 Mb.
#582433
TuriУчебник
1   ...   112   113   114   115   116   117   118   119   ...   349
Bog'liq
ilja kantor sovremennyj uchebnik-1chast PdfToWord

Внутреннее устройство массива


Массив – это объект, где в качестве ключей выбраны цифры, с дополнительными методами и свойством length .


Так как это объект, то в функцию он передаётся по ссылке:

function eat(arr) { arr.pop();


}
var arr = ["нам", "не", "страшен", "серый", "волк"] alert( arr.length ); // 5
eat(arr);
eat(arr);
alert( arr.length ); // 3, в функцию массив не скопирован, а передана ссылка


Ещё одно следствие – можно присваивать в массив любые свойства.

Например:


var fruits = []; // создать массив


fruits[99999] = 5; // присвоить свойство с любым номером fruits.age = 25; // назначить свойство со строковым именем


… Но массивы для того и придуманы в JavaScript, чтобы удобно работать именно с упорядоченными, нумерованными данными. Для этого в них существуют специальные методы и свойство length .


Как правило, нет причин использовать массив как обычный объект, хотя технически это и возможно.



Влияние на быстродействие
Методы push/pop выполняются быстро, а shift/unshift – медленно.

Чтобы понять, почему работать с концом массива – быстрее, чем с его началом, разберём подробнее происходящее при операции:


fruits.shift(); // убрать 1 элемент с начала


При этом, так как все элементы находятся в своих ячейках, просто удалить элемент с номером 0 недостаточно. Нужно еще и переместить остальные элементы на их новые индексы.


Операция shift должна выполнить целых три действия:



  1. Удалить нулевой элемент.

  2. Переместить все свойства влево, с индекса 1 на 0 , с 2 на 1 и так далее.

  3. Обновить свойство length .



Чем больше элементов в массиве, тем дольше их перемещать, это много операций с памятью.

Аналогично работает unshift : чтобы добавить элемент в начало массива, нужно сначала перенести вправо, в увеличенные индексы, все существующие.


А что же с push/pop ? Им как раз перемещать ничего не надо. Для того, чтобы удалить элемент, метод pop очищает ячейку и укорачивает length . Действия при операции:

fruits.pop(); // убрать 1 элемент с конца




Перемещать при pop не требуется, так как прочие элементы после этой операции остаются на тех же индексах.

Аналогично работает push .





Download 9,9 Mb.

Do'stlaringiz bilan baham:
1   ...   112   113   114   115   116   117   118   119   ...   349




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish