【发布时间】:2020-06-21 17:34:23
【问题描述】:
我想根据一组对象动态创建嵌套的 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 属性。
我想要的输出树对象看起来像:
{
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'}]}
],
}
}
}
我很难编写一个简洁的函数来构建这个基于基本集合的递归结构。我基本上希望keys 定义嵌套结构并将原始集合中的相关对象分组为递归子项。如果有更好的方法将原始集合放入输出结构中,我会全力以赴。
【问题讨论】:
-
“更好的方法”与什么比较?到目前为止你做了什么?
标签: javascript arrays typescript tree lodash