2015-02-20 3 views
2

Я использую библиотеку lodash для моего проекта Node.JS, и мне нужно отсортировать некоторые треки в зависимости от их тегов, данных пользователями. До сих пор, я могу группе Object_ID треков, но не в состоянии сортировать их по количеству записей для одной и той же object_idкак groupBy в lodash

К примеру у меня есть массив объектов, как показано ниже:

{ 
"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] как object_id 2 повторяется три раза (максимум от других) и должны быть сверху, и так далее .. .

Есть идеи? Thanks

+0

Откуда берет '1' в' [2,1,3] '? –

ответ

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(); 
Смежные вопросы