这与multi level groupby ramda js类似,但有一点不同,这给我带来了麻烦。除了两级分组之外,我还希望内部group by位于属性值的处理版本上。
考虑如下数据:
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' } ];
我可以取出密钥,对其进行处理,并使其具有唯一性,如下所示:
const getZoneFromName = n => join('-', slice(1, 3, split('-', n)));
uniq(map(getZoneFromName, pluck('name', data)));
这会让我得到一个很好的列表:
["key-a", "key-b", "key-c"]
我可以将列表分成两个级别:
const groupByTopThenZone = pipe(
groupBy(prop("top")),
map(groupBy(prop("name")))
);
groupByTopThenZone(data);
但我不知道如何将它们组合在一起以获得以下输出:
{
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是一个玩它的地方。
https://stackoverflow.com/questions/53824057
复制相似问题