如何从具有组的用户列表中创建具有地址字符串的组?

雪莲

我需要从用户列表中获得唯一组的列表,其中每个用户都具有一个或多个不同级别的组的成员资格。这些级别构成了一个层次结构,我希望将其作为地址(有点像IP地址)保存在组中。用户必须属于该层次结构中的所有组,因此,例如,如果不成为上述所有组的成员,则不可能成为3级组的成员。我从不受控制的API获取用户列表,因此很遗憾,传入的结构无法更改。

给定以下用户列表示例:

const users = [
  {
    'Level 1': 'first',
    'Level 2': 'second',
    'Level 3': 'third'
  },
  {
    'Level 1': 'first',
    'Level 2': 'second',
    'Level 3': 'another'
  }
]

当调用类似函数时:const groups = getGroups(users})它应该返回:

const expectedGroups = [
  {
    name: 'first',
    address: '1'
  },
  {
    name: 'second',
    address: '1.1'
  },
  {
    name: 'third',
    address: '1.1.1'
  },
  {
    name: 'another',
    address: '1.1.2'
  }
]
妮娜·斯科茨(Nina Scholz)

您可以按顺序获取对象的值,将对象用作可见名称的参考,并使用所有级别的信息为新名称添加添加新对象。

function getGroups(array) {
    var result = [],
        object,
        levels = { max: 0, value: '' },
        i, name, level, key;

    for (object of array) {
        i = 1;
        key = `Level ${i}`;
        level = levels;

        while (key in object) {
            name = object[key];
            if (!level[name]) {
                level[name] = { value: (level.value + (level.value && '.') || '') + ++level.max, max: 0 };
                result.push({ name, address: level[name].value });
            }
            level = level[name];
            key = `Level ${++i}`;
        }
    }
    return result;
}


var users = [{ 'Level 1': 'first', 'Level 2': 'second', 'Level 3': 'third' }, { 'Level 1': 'first', 'Level 2': 'second', 'Level 3': 'another' }],
    groups = getGroups(users);

console.log(groups);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在bash中的目录组中列出具有特定字符串的文件?

来自分类Dev

在Ubuntu Server中创建具有组的用户?

来自分类Dev

如何拆分一组具有特定数字的字符串

来自分类Dev

打印数组,将具有相同子字符串的组中的值分开

来自分类Dev

具有命名组的替换字符串中的Powershell变量

来自分类Dev

如何检查字符串是否具有列表中的子字符串?

来自分类Dev

给定一组字符串,创建词典字典,将其用作具有默认值的条目的键

来自分类Dev

从具有“+”字符的字符串创建字符串列表。使用“+”分隔列表

来自分类Dev

在PHP中创建包含数据(具有字符串类型)的列表

来自分类Dev

Python从具有key:value字符串的列表中创建字典

来自分类Dev

从列表中更改具有匹配字符串的列名

来自分类Dev

如何检查一个字符串是否具有多个相同的匹配组?

来自分类Dev

具有捕获组的C ++正则表达式字符串文字

来自分类Dev

以字符串[]返回用户所属的所有Active Directory组的列表

来自分类Dev

如何为所有记录组在一组记录中查找特定的字符串

来自分类Dev

如何在MediaWiki中创建组并将其分配给具有不同权限类型的用户

来自分类Dev

如果项目在python中具有特定字符串,如何提取列表中的项目?

来自分类Dev

如何合并具有一定数量子字符串的字符串以在Python的数据框中生成某些组

来自分类Dev

字符串匹配/与Mysql 5.0 / C#/ LINQ中具有不同**组合**的另一组字符串进行比较

来自分类Dev

如何获取所有不在内置特权组中且具有Admincount = 1的用户?

来自分类Dev

如何使用lambda函数在列表/数组中查找具有匹配字母的字符串?

来自分类Dev

如何访问在容器中具有字符串,整数和图像的列表(数组)

来自分类Dev

如何从列表中查找和删除具有给定字母总数的字符串对

来自分类Dev

如何删除列表中具有相同字符串但较低 startDate 的元素

来自分类Dev

如何在C中创建具有可变字符串长度的转换/查找表

来自分类Dev

如何在R中创建具有不同数字的字符串序列

来自分类Dev

如何从由字符串创建的字典中获取具有最高价值的键?

来自分类Dev

如何从字符串创建数组中具有属性的对象?

来自分类Dev

如何在C中创建具有可变字符串长度的转换/查找表

Related 相关文章

  1. 1

    如何在bash中的目录组中列出具有特定字符串的文件?

  2. 2

    在Ubuntu Server中创建具有组的用户?

  3. 3

    如何拆分一组具有特定数字的字符串

  4. 4

    打印数组,将具有相同子字符串的组中的值分开

  5. 5

    具有命名组的替换字符串中的Powershell变量

  6. 6

    如何检查字符串是否具有列表中的子字符串?

  7. 7

    给定一组字符串,创建词典字典,将其用作具有默认值的条目的键

  8. 8

    从具有“+”字符的字符串创建字符串列表。使用“+”分隔列表

  9. 9

    在PHP中创建包含数据(具有字符串类型)的列表

  10. 10

    Python从具有key:value字符串的列表中创建字典

  11. 11

    从列表中更改具有匹配字符串的列名

  12. 12

    如何检查一个字符串是否具有多个相同的匹配组?

  13. 13

    具有捕获组的C ++正则表达式字符串文字

  14. 14

    以字符串[]返回用户所属的所有Active Directory组的列表

  15. 15

    如何为所有记录组在一组记录中查找特定的字符串

  16. 16

    如何在MediaWiki中创建组并将其分配给具有不同权限类型的用户

  17. 17

    如果项目在python中具有特定字符串,如何提取列表中的项目?

  18. 18

    如何合并具有一定数量子字符串的字符串以在Python的数据框中生成某些组

  19. 19

    字符串匹配/与Mysql 5.0 / C#/ LINQ中具有不同**组合**的另一组字符串进行比较

  20. 20

    如何获取所有不在内置特权组中且具有Admincount = 1的用户?

  21. 21

    如何使用lambda函数在列表/数组中查找具有匹配字母的字符串?

  22. 22

    如何访问在容器中具有字符串,整数和图像的列表(数组)

  23. 23

    如何从列表中查找和删除具有给定字母总数的字符串对

  24. 24

    如何删除列表中具有相同字符串但较低 startDate 的元素

  25. 25

    如何在C中创建具有可变字符串长度的转换/查找表

  26. 26

    如何在R中创建具有不同数字的字符串序列

  27. 27

    如何从由字符串创建的字典中获取具有最高价值的键?

  28. 28

    如何从字符串创建数组中具有属性的对象?

  29. 29

    如何在C中创建具有可变字符串长度的转换/查找表

热门标签

归档