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

Есть правило на одну фразу, и оно решает почти все случаи. Произнеси вслух, как ты ищешь свою запись.
Сказал «третий по списку» — нужен массив. Сказал «тот, у которого 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) — это единственный надёжный способ.
Что быстрее добавлять?
Добавление в конец массива и запись ключа в объект одинаково дёшевы. Разница вылезает на поиске и на вставке в начало массива: там элементы приходится сдвигать.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





