Массивы и объекты

Тема дорожной карты · Frontend разработчик

Массивы и объекты JavaScript — это две фундаментальные составные структуры данных языка, лежащие в основе практически каждой задачи манипуляции данными во frontend-разработке. Массивы — упорядоченные коллекции с нулевой индексацией — обрабатываются богатым набором встроенных методов: push(), pop(), shift(), unshift() изменяют массив, тогда как map(), filter(), reduce(), find(), some(), every() и flatMap() возвращают новые массивы или значения без побочных эффектов, что делает их незаменимыми при рендеринге компонентов React и управлении состоянием. Объекты JavaScript хранят пары ключ-значение, доступные через точечную или скобочную нотацию, а утилитарные методы Object.keys(), Object.values(), Object.entries(), Object.assign() и оператор spread (...) позволяют выполнять немутирующие трансформации, которые поощряют типы TypeScript и правила ESLint. Вместе массивы и объекты JavaScript формируют слой данных каждого frontend-приложения — от локального состояния в React-хуках до полезных нагрузок ответов API, обрабатываемых через fetch API.

Как это работает

Массивы и объекты — однопоточный event-driven язык с first-class функциями, прототипным наследованием и динамической типизацией. Переменные: let, const (block-scope), избегайте var. Типы: number, string, boolean, null, undefined, symbol, bigint, object. Равенство: === (строгое) лучше == (коэрсит). Поток: if/else, for/for...of/for...in, while, switch. Асинхронность: callback → promise → async/await. DOM API (document, Element, Event) для чтения + изменения страницы.

Когда применять

Освойте ванильный JS до фреймворка — каждый React/Vue/Svelte баг в итоге оказывается JS-багом. const по умолчанию, let только при реассайне. async/await лучше сырых promise-цепочек. Array.map/filter/reduce лучше ручных циклов, когда intent ясен. Линтинг — ESLint + разумный config (Standard, Airbnb, recommended). Современные фичи (optional chaining ?., nullish coalescing ??).

Типичные ошибки

Ловушки Массивы и объекты: путаница this в callback (arrow-функции наследуют this; обычные создают своё); баги == (0 == "" истина); мутация массива, когда хотели копию (arr.sort() мутирует — используйте [...arr].sort()); забытый await и работа с Promise (не получаете значение); console.log объекта показывает живое состояние (меняется после лога). Используйте TypeScript, чтобы ловить это на сборке.

Связанные понятия

Полезные ресурсы