У меня есть такой массив:
var items = [
{name: 'popcorn', category: 'snacks'},
{name: 'nachos', category: 'snacks'},
...
{name: 'coke', category: 'drinks'}
];
Я хочу получить список категорий, упорядоченных по количеству элементов на нем (в большинстве случаев):
['snacks', 'drinks']
Вот как я это сделал:
var categories = _.chain(items)
.countBy(function (i) { return i.category })
.pairs()
.sortBy(function (c) { return -c[1] })
.map(function (c) { return c[0] })
.value();
Таким образом, результат countBy
- это объект, и я должен использовать pairs
для преобразования его в массив массивов, чтобы отсортировать его.
Интересно, есть ли более простой способ сделать это? Встроенная функция?