Кратко
Массив — это упорядоченный список значений. Элементы нумеруются с нуля: [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, и так далее.
Примеры
**Самый простой:**
const fruits = ['яблоко', 'банан', 'вишня'];
console.log(fruits[0]); // 'яблоко'
console.log(fruits.length); // 3Массив — список. Индекс начинается с 0. length — количество элементов.
**Простой:**
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 — начало. Это основные методы мутации.
**Реальный пример:**
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.