Я создаю веб-приложение, которое должно обрабатывать вложенные географические данные, чтобы они отображались как в виде дерева, но также были доступны для поиска. Необработанные данные выглядят примерно так:
id:1, name:UK
id:2: name: South-East, parentId: 1
id:3: name: South-West, parentId:1
id:4: name: Berkshire, parentId: 2
id:5: name: Reading, parentId: 4
и я хочу, чтобы это выглядело примерно так:
id:1: name UK, children[
{id: 2, name: South-East, children:[
{id:4: name: Berkshire, children: [
{id:5: name: Reading}
]
},
{id:3: name: South-West}
]
, чтобы каждое географическое расположение имело свойство массива "children", которое содержит все подобласти, каждая из которых имеет другое свойство массива "children", и так далее. Вероятно, имеет смысл также иметь свойство «parent», чтобы я мог переходить от любого дочернего элемента к его родительскому элементу.
Мне также нужно иметь возможность поиска в списке - поиск по каждой ветви дерева может занять некоторое время, поэтому, возможно, мне нужно также сохранить список в плоском формате.
Я знаю, как я мог бы сделать это в JavaScript (возможно, используя jLinq для фильтрации, группировки и сортировки), но я не знаю, насколько это было бы быстро. Кто-нибудь уже пробовал это сделать в JavaScript или знает какие-нибудь общие алгоритмы / шаблоны, которые решают эту проблему?