У меня есть массив как это:Count и сортировать по числу вхождений
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
, чтобы преобразовать его в массив массивов, чтобы отсортировать его.
Интересно, есть ли более простой способ сделать это? Встроенная функция?
Вы можете просто пройти «категорию» в функции countBy. Делает его маленьким, более слабым, более выразительным. –
Не будет ли возвращенная ценность этого вида [['snacks', 10] ['drinks', 9]]? – JSager
@ JSager oops Я забыл шаг карты. Исправлена. –