我正在努力将我的类别数组分组到一个像这个例子的集合中:
var programs = [
{
name: 'a',
categories: ['cat1', 'cat2']
},
{
name: 'b',
categories: ['cat2']
},
{
name: 'c',
categories: ['cat1', 'cat3']
}
];
如果你这样做:
_.groupBy(programs, function(item){ return item.categories; });
它返回:
{
'cat1, cat2': Array[1],
'cat1, cat3': Array[1],
'cat2': Array[1]
}
答案 0 :(得分:3)
通过互联网搜索后,我自己尝试使用Underscore.js
最后,我得到了适合我的解决方案:
var group = _.groupBy(_.flatten(_.pluck(programs, 'categories')), function(item){
return item;
});
返回:
{
'cat1': Array[2],
'cat2': Array[2],
'cat3': Array[1]
}
http://jsfiddle.net/pypurjf3/2/
我希望这能帮助一些人解决同样的问题。
答案 1 :(得分:0)
我遇到了类似的问题,但想要对分组的出现方式做多了解。这就是我最终得到的结果:
function groupByNested(theList, whichValue) {
// Extract unique values, sort, map as objects
var groups = _.chain(theList).pluck(theList, whichValue).flatten().uniq().reject(function(v) { return v==''; }).sort().map(function(g) { return { group: g, items: [] }; }).value();
// Iterate through the array and add applicable items into the unique values list
_.each(_ls.plants, function(p) {
_.each(p[whichValue], function(v) {
theGroup = _.find(groups, function(g) { return g.group == v; });
theGroup.items.push(p);
});
});
return groups;
}