Array
Array
Технический фундамент коллекций
Массивы полезны, когда важен порядок и пакетная обработка значений:
- доступ по индексу требует контроля границ;
- мутации (
push/pop/shift) меняют исходную структуру; - смешение типов в коллекции усложняет бизнес-логику;
- пустой массив должен быть штатно обработан в каждом сценарии.
Хорошая дисциплина коллекций уменьшает ошибки в фильтрации, сортировке и агрегации.
Почему массивы нужны почти в каждом приложении
Массив (array) хранит упорядоченный список значений. Это базовая структура для коллекций: товары, уроки, уведомления, комментарии, события. Без массивов сложно представить реальную разработку.
Ключевой момент: массив дает порядок элементов и доступ по индексу.
Проверь себя: почему индекс первого элемента в массиве равен 0, а не 1?
Создание и доступ к элементам
const lessons = ['Intro', 'Syntax', 'Variables'];
console.log(lessons[0]); // Intro
console.log(lessons.length); // 3
Если индекс вне диапазона, получишь undefined.
console.log(lessons[10]); // undefined
Смотри, что важно: всегда учитывай длину массива перед доступом по индексу.
Изменение массива
const tags = ['js', 'ts'];
tags.push('node');
tags.pop();
push добавляет в конец, pop удаляет последний элемент.
Также есть shift/unshift для начала массива.
Массивы и тип данных
Массив может содержать разные типы, но это не всегда хорошая идея.
const mixed = [1, 'two', true, null];
Для прикладного кода обычно лучше хранить однотипные элементы (например, список объектов товара).
Проверь себя: почему массив из разных типов усложняет обработку и тестирование?
Итерация по массиву
const scores = [60, 72, 88];
for (const score of scores) {
console.log(score);
}
Это базовый паттерн для обработки коллекций.
Мини-сценарий: фильтр пройденных уроков
const results = [45, 70, 81];
const passed = [];
for (const score of results) {
if (score >= 70) passed.push(score);
}
console.log(passed); // [70, 81]
Здесь задействованы и массив, и условия, и цикл - типичный прикладной поток.
В современном JS часто используют методы массивов, чтобы получать новый результат без ручного push:
const passed2 = results.filter((score) => score >= 70);
console.log(passed2); // [70, 81]
Смотри, что важно: filter возвращает новый массив и не меняет исходный results.
Частые ошибки новичков
- Путать индекс и значение элемента.
- Обращаться к несуществующему индексу без проверки.
- Мутировать массив, когда ожидался "новый" результат.
- Неверно считать границы в циклах (
<= lengthвместо< length).
Анти-провал: при итерации по индексам всегда проверяй условие остановки внимательно.
Что будет, если изменить вход
Если results пустой, цикл просто не выполнится и passed останется пустым массивом - это нормальный edge case. Если в массив попадет строка '80', сравнение может дать неожиданные эффекты в более сложной логике, поэтому лучше нормализовать данные заранее.
Проверь себя: как поведет себя фильтр, если в массиве есть null?
Краткий итог
arrayхранит упорядоченные коллекции значений.- Доступ идет по индексу, начиная с
0. - Методы
push/pop/shift/unshiftуправляют структурой массива. - Итерация по массивам - базовая операция в прикладном коде.
- Для надежной логики важны контроль границ, типизация элементов и учет пустых коллекций.