Я хочу динамически создать вложенный объект Tree на основе коллекции объектов, для которых уровни дерева могут быть определены в списке ключей.
Моя коллекция может выглядеть как [{a_id: '1', a_name: '1-name', b_id: '2', b_name: '2_name', c_id: '3', c_name: '3_name'}...]
Мои ключи, соответствующие уровням дерева, могут выглядеть так: ['a', 'b', 'c']
У объекта верхнего уровня есть свойство options
, в котором хранится {key: any, value: any}
. Все дочерние элементы одинаковы, но они вложены в массив с именем groups
, который имеет свойство group
, которое ссылается на значение его родительского параметра.
Выводимый объект Tree, который я хотел бы, выглядел бы примерно так:
{
id: 'a',
options: [{ key: '1-name', value: '1'}...],
child: {
id: 'b',
groups: [
{ group: '1', name: '1-name', options: [{key: '2-name', value: '2'}]}
],
child: {
id: 'c',
groups: [
{ group: '2', name: '2-name', options: [{key: '3-name', value: '3'}]}
],
}
}
}
Мне трудно написать функцию succint, которая будет строить эту рекурсивную структуру из коллекции basi c. В основном я хочу, чтобы keys
определял вложенную структуру и группировал связанные объекты из исходной коллекции как рекурсивные дочерние элементы. Если есть лучший способ вставить оригинальную коллекцию в структуру вывода, я все уши.