首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有属性上的函数的多级groupby

具有属性上的函数的多级groupby
EN

Stack Overflow用户
提问于 2018-12-18 06:43:33
回答 2查看 151关注 0票数 3

这与multi level groupby ramda js类似,但有一点不同,这给我带来了麻烦。除了两级分组之外,我还希望内部group by位于属性值的处理版本上。

考虑如下数据:

代码语言:javascript
运行
复制
const data = [ 
  { top: 'top1',
    name: 'junk-key-a-101' },
  { top: 'top1',
    name: 'junk-key-b-102' },
  { top: 'top2',
    name: 'junk-key-c-103' },
  { top: 'top2',
    name: 'junk-key-c-104' } ];

我可以取出密钥,对其进行处理,并使其具有唯一性,如下所示:

代码语言:javascript
运行
复制
const getZoneFromName = n =>  join('-', slice(1, 3, split('-', n)));
uniq(map(getZoneFromName, pluck('name', data)));

这会让我得到一个很好的列表:

代码语言:javascript
运行
复制
["key-a", "key-b", "key-c"]

我可以将列表分成两个级别:

代码语言:javascript
运行
复制
const groupByTopThenZone = pipe(
  groupBy(prop("top")),
  map(groupBy(prop("name")))
);
groupByTopThenZone(data);

但我不知道如何将它们组合在一起以获得以下输出:

代码语言:javascript
运行
复制
{
    top1: {
        "key-a": [
            {
                name: "junk-key-a-101",
                top: "top1"
            }
        ],
        "key-b": [
            {
                name: "junk-key-b-102",
                top: "top1"
            }
        ]
    },
    top2: {
        "key-c": [
            {
                name: "junk-key-c-103",
                top: "top2"
            },
            {
                name: "junk-key-c-104",
                top: "top2"
            }
        ]
    }
}

我感觉有点傻,因为我不能得到这个。你有什么想法吗?Here是一个玩它的地方。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53824057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档