如何在 lodash 中分组
how to groupBy in lodash
我正在为我的 Node.JS 项目使用 lodash 库,我需要根据用户提供的标签对一些曲目进行排序。
到目前为止,我能够按 object_id 曲目进行分组,但无法按相同 object_id
的记录数对它们进行排序
例如我有一个对象数组如下:
{
"error": false,
"status": 200,
"data": [
{
"id": 1,
"object_id": 2,
"term_taxonomy_id": 1,
"user_id": 1,
},
{
"id": 3,
"object_id": 3,
"term_taxonomy_id": 1,
"user_id": 1,
},
{
"id": 10,
"object_id": 2,
"term_taxonomy_id": 1,
"user_id": 3,
},
{
"id": 12,
"object_id": 2,
"term_taxonomy_id": 1,
"user_id": 5,
},
{
"id": 14,
"object_id": 1,
"term_taxonomy_id": 1,
"user_id": 5,
},
{
"id": 15,
"object_id": 1,
"term_taxonomy_id": 1,
"user_id": 3,
}
]
}
使用 lodash 我想要这样的结果:
[2,1,3] 因为 2 的 object_id 重复了 3 次(从其他人的最大值)并且应该是顶部,依此类推......
有什么想法吗?
谢谢
_.chain(data)
.groupBy(function(d) { return d.object_id; })
.map(function(g) { return [g[0].object_id, g.length]; })
.sortBy(function(d) { return d[1] * -1; }) // d[1] is the length of each group
.map(function(d) { return d[0]; }) // d[0] is the gorup's key
.value();
我正在为我的 Node.JS 项目使用 lodash 库,我需要根据用户提供的标签对一些曲目进行排序。 到目前为止,我能够按 object_id 曲目进行分组,但无法按相同 object_id
的记录数对它们进行排序例如我有一个对象数组如下:
{
"error": false,
"status": 200,
"data": [
{
"id": 1,
"object_id": 2,
"term_taxonomy_id": 1,
"user_id": 1,
},
{
"id": 3,
"object_id": 3,
"term_taxonomy_id": 1,
"user_id": 1,
},
{
"id": 10,
"object_id": 2,
"term_taxonomy_id": 1,
"user_id": 3,
},
{
"id": 12,
"object_id": 2,
"term_taxonomy_id": 1,
"user_id": 5,
},
{
"id": 14,
"object_id": 1,
"term_taxonomy_id": 1,
"user_id": 5,
},
{
"id": 15,
"object_id": 1,
"term_taxonomy_id": 1,
"user_id": 3,
}
]
}
使用 lodash 我想要这样的结果: [2,1,3] 因为 2 的 object_id 重复了 3 次(从其他人的最大值)并且应该是顶部,依此类推......
有什么想法吗? 谢谢
_.chain(data)
.groupBy(function(d) { return d.object_id; })
.map(function(g) { return [g[0].object_id, g.length]; })
.sortBy(function(d) { return d[1] * -1; }) // d[1] is the length of each group
.map(function(d) { return d[0]; }) // d[0] is the gorup's key
.value();