【发布时间】:2019-01-01 22:48:41
【问题描述】:
我实现了一个 UI,以便更好地了解我们的 LDAP 分支。 为此,我想使用 Angular Materials Tree。单击所有分支非常好且非常直观。 (https://material.angular.io/components/tree/overview)
我有什么:
作为字符串的多个 LDAP 路径数组:
groups = [
'cn=devops,ou=smallUnit1,ou=unit1,o=group1,c=de',
'cn=devops,ou=smallUnit1,ou=unit1,o=group2,c=de',
'cn=devops,ou=smallUnit2,ou=unit1,o=group1,c=de',
'cn=dev,ou=smallUnit1,ou=unit2,o=group1,c=de',
'cn=dev,ou=smallUnit1,ou=unit1,o=group2,c=de',
'cn=ops,ou=smallUnit1,ou=unit1,o=group1,c=de'
]
我已经做过的事情:
我将此字符串转换为具有依赖关系的独立路径数组。 组 [0] 的示例:
dependencies = [
{id: 'c=de', parent: NULL, child: 'o=group1'},
{id: 'o=group1', parent: 'c=de', child: 'ou=unit1'},
{id: 'ou=unit1', parent: 'o=group1', child: 'ou=smallUnit1'},
{id: 'ou=smallUnit1', parent: 'ou=unit1', child: 'cn=devops'},
{id: 'cn=devops', parent: 'ou=smallUnit1', child: NULL}
]
我需要什么:
我需要一个对象,其中所有键都是我们 LDAP 的路径:
{
c=de: {
o=group1: {
ou=unit1: {
ou=smallUnit1: {
cn=devops: {},
cn=ops: {}
}
ou=smallUnit2: {
cn=devops: {}
}
},
ou=unit2: {
ou=smallUnit1: {
cn=dev: {}
}
}
},
o=group2: {
ou=unit1: {
ou=smallUnit1: {
cn=devops: {},
cn=dev: {}
}
}
}
}
}
我已经尝试过使用这样的方法: Build tree array from flat array in javascript 但是这个算法使用 push 函数将新分支添加到 arraykey。我需要 key 是具有更多键的对象。
【问题讨论】:
-
数据排序了吗?没有,你如何区分 ou=smallUnit1 和
ou=unit1和ou=unit2?
标签: javascript arrays json angular typescript