@AndrewRusinas

Есть ли какое-то преимущество в скорости работы такого подхода?

Есть массив объектов, который нужно часто перебирать. Каждый объект содержит id, по которому производится поиск. Всё это для интерфейса, поэтому скорость важнее памяти (но это не точно), потому я думаю, выгоднее ли переделать вот это:
const objects = [
    {
        id: '1',
        content: 'lol'
    },
    {
        id: '2',
        content: 'kek'
    }
]


В вот это:
const objects = {
    '1': {
        id: '1',
        content: 'lol'
    },
    '2': {
        id: '2',
        content: 'kek'
    }
}


Дублирование id неизбежно, т.к. объекту нужно его знать (для внутренних методов)
  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ответы на вопрос 4
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
profesor08
@profesor08 Куратор тега JavaScript
Проблема не понятна, как и не понятно что с ее помощью пытаешься решить. И тем не менее, можно кое-то прояснить.

Если у тебя могут быть объекты с одинаковым id, то придется их хранить в массиве. Либо сделать так, чтоб у них был уникальный id, и вот тогда ты сможешь сделать себе объект, где ключ будет соответствовать id объекта и обращаться по ключу.

Если тебе надо по ним итерировать, то однозначно массив.
Ответ написан
Комментировать
riky
@riky
Laravel
зависит от задачи, если обьектов всегда до 100-1000 и поиск не часто - то и разницы не заметишь.

еще можно сделать гибридный вариант, изначально обьекты в массивах, но создаются "индексы" по разным полям например по этому же ид (как во втором варианте). но можно сделать и несколько с разными полями, если нужно искать по разным.
также память не сильно расодует, т.к. обьекты везде передаются по ссылке (не копируются) и соответственно при изменении из любого массива "синхронизируются".
Ответ написан
Комментировать
mrsexy
@mrsexy
Senior Pomidor
Короче, 2 вариант и не еби мозги.
Быстрей постучать в квартиру зная номер, чем искать пресловутую проститутку зная этаж!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы