JS Core

Массивы

Научиться создавать массивы, обращаться к элементам по индексу, понимая длину, мутацию и ссылочную природу массивов.

Начальный (Beginner)
Нужно знать:Optional chaining

Кратко

Массив — это упорядоченный список значений. Элементы нумеруются с нуля: [0] — первый элемент. Массивы могут хранить любые значения: числа, строки, объекты, другие массивы.


Подробно

Массив — это особый объект для хранения упорядоченных данных.

Создание: const numbers = [1, 2, 3, 4, 5]; const mixed = [1, 'hello', true, null]; const empty = [];

Доступ к элементам (нумерация с 0!): numbers[0] // 1 (первый элемент) numbers[2] // 3 (третий элемент) numbers[5] // undefined (нет элемента)

Длина: numbers.length // 5

Изменение: numbers[0] = 10; // теперь [10, 2, 3, 4, 5]

Добавление: numbers.push(6); // добавить в конец numbers.unshift(0); // добавить в начало

Удаление: numbers.pop(); // удалить с конца numbers.shift(); // удалить с начала

Мутация vs Иммутабельность: const arr = [1, 2, 3]; arr.push(4); // мутация (меняет arr) const arr2 = arr.concat([5]); // иммутабельность (создаёт новый массив)

Ссылочная природа: const a = [1, 2, 3]; const b = a; b.push(4); console.log(a); // [1, 2, 3, 4] (а тоже изменился!)

// Копия: c = [...a]; // spread создаёт копию


Ментальная модель

Массив — как полка с коробками. Каждая коробка имеет номер (индекс). Нумерация начинается с 0 — первая коробка имеет номер 0, вторая — 1, и так далее.


Примеры

**Самый простой:**

javascript
const fruits = ['яблоко', 'банан', 'вишня'];

console.log(fruits[0]);    // 'яблоко'
console.log(fruits.length); // 3

Массив — список. Индекс начинается с 0. length — количество элементов.

**Простой:**

javascript
const numbers = [10, 20, 30];
numbers.push(40);    // [10, 20, 30, 40]
numbers.pop();       // [10, 20, 30]
numbers.unshift(5);  // [5, 10, 20, 30]
console.log(numbers); // [5, 10, 20, 30]

push/pop — конец массива. unshift/shift — начало. Это основные методы мутации.

**Реальный пример:**

javascript
const original = [1, 2, 3];
const copy = [...original];

copy.push(4);
console.log(original); // [1, 2, 3] (не изменился!)
console.log(copy);     // [1, 2, 3, 4]

Spread (...) создаёт копию массива. Изменения copy не влияют на original.


Частые ошибки

**Неправильно:** Думать, что индекс начинается с 1

**Почему:** В JavaScript индексы начинаются с 0. Первый элемент — arr[0], а не arr[1].

**Правильно:** arr[0] — первый элемент. arr[length-1] — последний.

**Неправильно:** Путать push/pop и unshift/shift

**Почему:** push/pop работают с концом, unshift/shift — с началом.

**Правильно:** push → конец (добавить), pop ← конец (удалить). unshift → начало (добавить), shift ← начало (удалить).

**Неправильно:** Думать, что length обновляется автоматически при удалении

**Почему:** splice() меняет length, delete — нет (создаёт пустой слот).

**Правильно:** Используйте splice() для удаления, не delete.


Важно запомнить

  • Индексы начинаются с 0
  • length — количество элементов
  • push/pop — конец, unshift/shift — начало
  • Массивы передаются по ссылке
  • Spread [...] создаёт копию

Связь

Назад: Вы знаете объекты (J11) — массивы это особый вид объекта для упорядоченных данных.

Вперёд: Следующий урок (J14) — базовые методы массивов: map, filter, find, reduce.


Читайте дальше

Материалы курса JS Core — PROlab Academy.