我正在为我的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重复三次(其他人的最大值)并且应该是顶部,依此类推......
有什么想法吗? 感谢
答案 0 :(得分:2)
_.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();