Что такое…

Массив или объект — что выбрать для своих данных

Иллюстрация: пронумерованный ряд ящиков рядом со шкафчиком с именными бирками

Есть правило на одну фразу, и оно решает почти все случаи. Произнеси вслух, как ты ищешь свою запись.

Сказал «третий по списку» — нужен массив. Сказал «тот, у которого id 7» — нужен объект.

Звучит мелко, а разница в цене огромная: на десяти тысячах записей объект находит нужную примерно в тысячу раз быстрее. Ниже — почему так и когда это перестаёт быть теорией.

Чем они отличаются

Массив — это значения по порядку, пронумерованные с нуля. Доступ по номеру:

const cart = ["чай", "мёд", "лимон"]
cart[1]   // "мёд"

Объект — это значения под именами. Порядка нет, зато есть ключи:

const user = { name: "Аня", city: "Алматы", plan: "pro" }
user.city   // "Алматы"

Два способа хранить много всего. Массив отвечает на вопрос «какие есть и в каком порядке». Объект — на вопрос «что известно про эту одну штуку».

Разбор по критериям

Порядок. У массива он есть и он важен: лента, история сообщений, шаги инструкции. У объекта порядка нет — на него нельзя полагаться, ключи не выстроены в очередь.

Как достаёшь. Из массива — по номеру, но номер ты обычно не знаешь. Из объекта — по имени ключа, и имя ты знаешь всегда: user.email читается без подсказок.

Дубликаты. В массиве можно хранить три одинаковых значения. В объекте ключи уникальны: записал plan дважды — второе затрёт первое, молча.

Скорость поиска. Вот главный пункт. Чтобы найти в массиве запись с нужным id, приходится перебирать элементы подряд, пока не совпадёт. Десять тысяч записей — до десяти тысяч сравнений. Объект устроен иначе: он считает ключ и прыгает к значению сразу, за один шаг, независимо от размера.

Сколько сущностей. Массив — про много однотипных. Объект — про одну штуку с разными полями.

Кому что подойдёт

Без увиливаний.

  • Список чего угодно для показа на экране — массив. Товары, задачи, сообщения, результаты поиска. Порядок нужен, обходить циклом удобно, map превращает список в карточки.
  • Одна сущность со свойствами — объект. Профиль пользователя, настройки приложения, один заказ. Поля разные и называются по-человечески.
  • Справочник, куда лезут по ключу, — объект. Курсы валют, переводы интерфейса, настройки по названию. Тот самый случай, где скорость поиска решает.
  • Всё, что уходит в API, — чаще массив объектов. Это стандартная форма ответа: [ { id: 1, ... }, { id: 2, ... } ]. Посмотри любой JSON — увидишь именно её.

Последний пункт снимает половину споров: на практике это не «или — или». Массив объектов — самая частая структура в коде, который пишет ИИ, и она честно совмещает оба подхода.

Приём, который экономит вечер

Если ты часто ищешь в массиве по id, не оставляй перебор — переложи список в объект один раз:

const byId = {}
for (const item of items) {
  byId[item.id] = item
}
byId[7]   // мгновенно

Перебор случился один раз при сборке. Все дальнейшие обращения — за один шаг. Это классика оптимизации списков, и её стоит знать раньше, чем понадобится.

Оговорка: на сотне элементов разницы ты не заметишь. Смысл появляется там, где ищешь много раз в цикле — тогда «перебор внутри перебора» превращает сотню записей в десять тысяч сравнений.

И честная граница: если данных правда много и они нужны надолго — это уже работа для базы данных, а не для структуры в памяти. Массивы и объекты живут, пока открыта страница.

Массив — это тоже объект?

В JavaScript технически да: typeof [] вернёт "object". Но ведут себя они по-разному, и на практике их разделяют. Проверять надо через Array.isArray(value) — это единственный надёжный способ.

Что быстрее добавлять?

Добавление в конец массива и запись ключа в объект одинаково дёшевы. Разница вылезает на поиске и на вставке в начало массива: там элементы приходится сдвигать.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →