我使用underscore库并想知道我是否可以轻松获取列表中特定项目的频率。
例如,我有数组:
var list = ['a', 'b', 'c', 'a'];
我想要类似的东西:
var count_a = /*returnCountFunction*/(list, 'a'); // 2.
var count_b = /*returnCountFunction*/(list, 'b'); // 1.
我很有意思只使用下划线.JS。
Java有: Collections.frequency(list, "a");
[编辑]
实际上我有复杂的对象列表,但我写道:
$scope.getUniqueBiz = function(list){
return _.chain(list)
.pluck('biz_name')
.unique()
.value();
};
谢谢,
答案 0 :(得分:2)
将列表分组到组中并返回对象数的计数 在每个小组中。
所以这个:
result = _.countBy(list);
返回此(在您的列表中):
{a:2,b:1,c:1}
你可以从中获取:
result['a'];
答案 1 :(得分:1)
这应该这样做:
_.filter(['a', 'b', 'c', 'a'], function(item){ return item == 'a'; }).length;
答案 2 :(得分:1)
var search = 'a';
var result = _.reduce(['a', 'b', 'c', 'a'], function(sum, letter) {
return letter === search ? sum + 1 : sum;
}, 0);