我有一個這樣的數組:計數和排序按次數
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我忘了地圖的一步。固定。 –