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 управляют структурой массива.
  • Итерация по массивам - базовая операция в прикладном коде.
  • Для надежной логики важны контроль границ, типизация элементов и учет пустых коллекций.