Задать вопрос
@223606322
начинающий web-разработчик

Что лучше: map, Object или Array для хранения данных?

Например есть группа объектов с пользователями.
{id: id-1, name: 'Вася'}, {id: id-2, name: 'Петя'}, {id: id-3, name: 'Маша'}, {id: id-4, name: 'Илья'}, {id: id-5, name: 'Егор'}


Как их лучше хранить?
массивом
const myArray = [{id: id-1, name: 'Вася'}, {id: id-2, name: 'Петя'}, {id: id-3, name: 'Маша'}, {id: id-4, name: 'Илья'}, {id: id-5, name: 'Егор'}]

переписать группу объектов в один, позаимствовав их ключи<
const myOvj = {
id-1: {id: id-1, name: 'Вася'}, 
id-2: {id: id-2, name: 'Петя'}, 
id-3: {id: id-3, name: 'Маша'}, 
id-4: {id: id-4, name: 'Илья'}, 
id-5: {id: id-5, name: 'Егор'}
}

воспользоваться Map, также взяв переняв ключи
const myMap = new Map([
['id-1',  {id: id-1, name: 'Вася'}],
['id-2',  {id: id-2, name: 'Петя'}],
['id-3',  {id: id-3, name: 'Маша'}],
['id-4',  {id: id-4, name: 'Илья'}],
['id-5',  {id: id-5, name: 'Егор'}]
])


Если я правильно понимаю, объект лучше массива потому что взять значение по ключу из объекта намного быстрее чем перебирая в цикле. у Map есть приятный метод forEach для перебора в цикле. Но я не знаю как хорошо браузеры оптимизируют Map? Быстрее ли поиск в Map чем поиск в обычном массиве?

Вообще насколько целесообразно заменить массив на объект?
  • Вопрос задан
  • 1389 просмотров
Подписаться 2 Средний 4 комментария
Решения вопроса 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
{
 1:  'Вася',
 2:  'Петя',
 3:  'Маша',
}
Ответ написан
Комментировать
Быстрее ли поиск в Map чем поиск в обычном массиве?

Поиск по ключу - конечно да. В случае массива, в худшем случае, придётся перебрать весь массив, а в случае с Map и Object поиск будет за константное время, но чуть большее, чем в массиве по номеру элемента.

А разницы между Map и Object особой быть не должно, но я бы предпочёл Map.
Ответ написан
Alexandroppolus
@Alexandroppolus
кодир
Массив нужен, если требуется зафиксировать порядок элементов, карта типа объект - если быстрый поиск по ключу. Map - если ключами могут быть не только лишь строки или числа, а например объекты.
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
Если у тебя набор однотипных данных, то скорее всего, тебе захочется хранить их в массиве. Просто потому что с массивом гораздо проще обращаться. Если ты хочешь получать элементы по ключу, то тебе сначала надо как-то этот ключ получить. А получить ты его можешь если будешь иметь доступ к искомому элементу. А если элемент уже имеется, то и искать его нет смысла. Далее ты передаешь его по ссылке и все.

Map, нужен только тогда, когда массив тебе не подходит, по каким-то объективным причинам, которые ты должен придумать себе сам. Например когда у тебя ключ - не строка, а другой объект. Иногда полезно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
Всё зависит от тога как работать с этими данными - поиск, вставка, удаление...
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Что мешает попробовать и получить метрики?
Инструментов масса. Вообще начинайте любить отладчик и профайлер
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы