我有这样一个数组:
var items = [
{name: 'popcorn', category: 'snacks'},
{name: 'nachos', category: 'snacks'},
...
{name: 'coke', category: 'drinks'}
];
Run Code Online (Sandbox Code Playgroud)
我想得到一个按照项目数量排序的类别列表(大多数项目排在第一位):
['snacks', 'drinks']
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
var categories = _.chain(items)
.countBy(function (i) { return i.category })
.pairs()
.sortBy(function (c) { return -c[1] })
.map(function (c) { return c[0] })
.value();
Run Code Online (Sandbox Code Playgroud)
所以结果countBy是一个对象,我必须使用pairs它将它转换为一个数组数组,以便对它进行排序.
我想知道是否有更简单的方法来做到这一点?内置功能?
Ber*_*rgi 22
我想知道是否有内置功能?
不,你的方法很好.
更简单的方法吗?
您可以通过仅传递属性名称而不是函数来缩短它:
var categories = _.chain(items)
.countBy("category")
.pairs()
.sortBy(1).reverse()
.pluck(0)
.value();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8853 次 |
| 最近记录: |