Масиви

... з циклами ми круті. З масивами ми вдвічі крутіші.

let array = [];

... тут ми говоримо: створи новий порожній масив, і проасоціюй його зі змінною array (назва може бути будь-якою).

Що це значить? Тепер у нас є безмежна кількість звичайних змінних.

Їх імена: array[0], array[1], array[2], array[3] .....

Радимо сприймати ці змінні як абсолютно незалежні, а про змінну array (сам масив) забути зовсім. Її "не існує", є лише array[0], array[1], array[2], array[3] .....

Що лежить там? Нічого, як і в звичайних змінних. В JavaScript це називається undefined. Спробуйте вивести на екран вміст array[0] і ви побачите як це провізуалізується.

Добре, тепер у нас є дуже багато змінних. Що зазвичай з ними роблять?

  • зберігають кольори кожного пікселя картинки

  • зберігають здоров'я / набої всіх гравців в грі

  • зберігають імена всіх учнів

  • зберігають координати кожної з 1000 частинок при малюванні анімованого фонтану

  • і таке інше

Виходить, масиви — це контейнери, в яких можуть зберігатися багато значень (а не одне, як у звичайних змінних).

Елементи масиву — це змінні. Тобто, з ними можна робити все, що і зі звичайними змінними й поза масивом. Єдина різниця: у масиві змінні не мають імен, замість імені — порядковий номер (індекс).

Пам'ятаєте аналогію про змінні-коробки з попередніх розділів? Якщо продовжити, можна уявити масив коробкою, в якій лежать інші коробки(змінні).

Приклад "масиву", який містить три "змінних"

Оголошення масивів

Масив — це скільки завгодно довгий набір нумерованих значень. Ці значення можуть бути будь-якого типу. Зараз ми створюємо масив відразу з елементами

Масив також може не містити жодного елементу при створенні.

Як ви помітили, щоб працювати з елементом масиву, треба вказати його номер (індекс). Найперший елемент масиву має індекс 0.

Сподіваюся ви звернули увагу на array[32-30+array[0]] У цьому сила масивів: індекс можна вирахувати. Про це далі.

Неіснуючі або невизначені елементи масиву можна проініціалізувати.

Замість нудного...

...скористаємось циклами:

Зверніть увагу на вміст комірки з індексом 10.

Елементи масиву можна перевизначити. Взагалі, повторимося, елементи масиву - це звичайні змінні, тому нічого нового ми вам не розповідаємо

length

Розмір масиву зазвичай на 1 більше, ніж індекс останнього ініціалізованого елемента.

Обхід масивів

Для того, щоб обійти масив (тобто по черзі попрацювати з кожним його елементом), зручно використовувати цикли. Для обходу масиву можна використовувати такий шаблон коду:

Наприклад, збільшимо кожен елемент масиву на одиницю.

Подивимося тепер на цей приклад:

Розгадка полягає в тому, що масиви не лежать в змінних. У змінних лежать посилання на масиви. А значить, при присвоєнні ми не будемо копіювати масив.

Поки що неважливо знати деталі, а може і важливо :)

Багатовимірні масиви

Про багатовимірні масиви почитайте в інтернеті. Там нічого складного, просто масиви масивів, і вкладені цикли, щоб працювати з ними. Завдання Ш++ на вступному тестуванні зазвичай не вимагають вміння працювати з багатовимірними масивами.

Вихід за межі масиву

Не виходьте за межі масиву! (тут слово "межа" означає все що менше ніж 0 або більше .length-1) Якщо ви звертаєтеся для читання значень комірки, якої не існує, то вам повернеться значення undefined. Якщо ж ви запишете число в елемент масиву, якого не існує, то масив автоматично розшириться.

Хоча якщо у вас масив порожній (тобто його довжина дорівнює 0), то природно для заповнення масиву потрібно звертатися до "неіснуючих" комірок. Таким чином власне заповнюючи масив.

В планах — перезаписати це відео українською. Якщо хочете допомогти та можете зробити це якісно — долучайтесь, так переклад з'явиться швидше. Щодо всіх питань з цього приводу пишіть на info@programming.org.ua

Додаткові матеріали

Про масиви (uk.javascript.info)

Ще про масиви (яваскрипт.укр)

Про об'єкти (uk.javascript.info)

Обов'язкові задачі

МістаБанкоматВідцентрована штука

Виникли питання або труднощі? Зверніться за допомогою до Ш++.

Last updated

Was this helpful?