Задать вопрос

Как реализовать быстрый поиск в массиве объектов по значению свойства?

Допустим есть массив объектов:
var myArray = [
	{id: 1, name: 'Вася', age: 21, city: 'Москва'},
	{id: 2, name: 'Коля', age: 22, city: 'Новгород'},
	{id: 3, name: 'Петя', age: 23, city: 'Челябинск'},
	{id: 4, name: 'Саша', age: 24, city: 'Омск'},
];

Допустим, мне требуется найти всех людей живущих в Омске.
Я пробовал делать обычными перебором, методом Find и where в underscore. Все эти способы работают слишком долго. нужен более быстрый способ т.к. объектов в массиве будет более миллиона, кроме того после поиска идёт ещё обработка данных, которая тоже занимает время, но дольше всего работает именно поиск.
Структуру массива и объектов менять, к сожалению, не имею возможности.
Подскажите варианты решения проблемы.
  • Вопрос задан
  • 22537 просмотров
Подписаться 11 Оценить 8 комментариев
Ответ пользователя Dmitriy Mozgovoy К ответам на вопрос (9)
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Это какая то шутка?) Имхо 1М записей держать на клиенте и по ним еще искать это тупо, причем очень и властелин должен за такое наказывать.
Если не устраивают индексирование в массиве, webworker'ы не дают прироста, то больше тут ничего особо не сделаешь- клиентские девайсы не резиновые . Это задача сервера, а не клиента.
берете вебсокеты, вместо ajax, если хотите сэкономить мс, разумеется node, redis/mongo+кастомный клиентский кэш и вперед. в 100-200мс думаю вложитесь, это можно считать мгновенно. Что мешает этому?
Ответ написан