@Kusmich

Как отсортировать массив объектов для бинарного поиска?

Есть масив обектов(обектов очень много), нужно отсортировать их так чтоб можно было применить бинарный поиск.

obj = [
       12234 :{
                "ID" : "CV122H32",
                "name"     :  "Дмитрий",
                "position" :  "Слесарь"  
        },
               334534:{
                "ID" : "SM12345",
                "name"     :  "Антон",
                "position" :  "Електрик"  
        },
    ]


Напирмер в обьекте выше, нужно использовать поиск человека по полю id. Но так как массив обьектов очень большой , то нужно как-то оптимизировать поиск.

Читал, что неплохой вариант "бинарный поиск". Но перед его применением, нужно использовать сортировку. Вот момент из сортировкой мне непонятен.
Какую сортировку нада использовать конкретно для моего случая ?
  • Вопрос задан
  • 354 просмотра
Решения вопроса 1
GavriKos
@GavriKos
Любую. Главное чтобы массив был отсортирован по возрастанию по тому параметру ,по которому и будет осуществляться поиск.

Но, если объектов очень много (миллионы) - то такой подход не верен - лучше уж БД тогда.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AppFA
@AppFA
Frontend developer at Yandex
Код который вы привели - не валидный, вы пытаетесь в массив добавить ключ, в JS'e нету ассоциативных массивов, зато можно использовать объекты в качестве хэш таблицы:
const data = {
    12234: { ... },
    334534: { ... }
};

При таком раскладе вам не нужно ничего сортировать и делать, просто берете из хэш таблицы данные по нужному вам ключу:
const employee = data['334534']
P.S. Если у вас изначально данные приходят в виде массива объектов т.е.:
const data = [
    { ... },
    { ... }
];

Вам следует выполнить нормализацию данных и привести их к виду который я написал выше, как вариант в JS'e есть либа для этого: "normalizr"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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