Mar*_*yen 8 javascript backbone.js underscore.js
示例集合(仅显示模型):
[
{
name: "Bob"
date: "Thu Mar 29 2012"
},
{
name: "James"
date: "Fri Mar 30 2012"
},
{
name: "Dylan"
date: "Fri Mar 30 2012"
},
{
name: "Stanley"
date: "Sat Mar 31 2012"
},
]
Run Code Online (Sandbox Code Playgroud)
如何使用Underscore.js的groupBy函数对具有相同日期的模型进行分组?
bul*_*rog 47
如果要对实际主干集合进行分组,则可以使用主干方法groupBy,它隐式使用下划线_.groupBy功能.在我看来,这是一种更清洁的方法.
collection.groupBy( function(model){
return model.get('date');
});
Run Code Online (Sandbox Code Playgroud)
RaT*_*TiO 10
ThiefMaster的答案是完全有效的,但它引起了我一些困惑,因为我正在搜索标题所示的backbone.js集合的解决方案.
如果问题对象是主干集合,我们应该按照日期对模型进行分组:
_.groupBy(collection.models, function(model){
return model.get('date')
});
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助
使用 _.groupBy(data, 'date');
您也可以使用传递自定义函数,但在这种情况下,没有必要,因为上面的属性快捷语法工作正常.
_.groupBy(data, function(row) {
return row.date;
});
Run Code Online (Sandbox Code Playgroud)
演示:
> _.groupBy(data, 'date')
{ 'Thu Mar 29 2012': [ { name: 'Bob', date: 'Thu Mar 29 2012' } ],
'Fri Mar 30 2012':
[ { name: 'James', date: 'Fri Mar 30 2012' },
{ name: 'Dylan', date: 'Fri Mar 30 2012' } ],
'Sat Mar 31 2012': [ { name: 'Stanley', date: 'Sat Mar 31 2012' } ] }
> _.groupBy(data, function(row) { return row.date });
{ 'Thu Mar 29 2012': [ { name: 'Bob', date: 'Thu Mar 29 2012' } ],
'Fri Mar 30 2012':
[ { name: 'James', date: 'Fri Mar 30 2012' },
{ name: 'Dylan', date: 'Fri Mar 30 2012' } ],
'Sat Mar 31 2012': [ { name: 'Stanley', date: 'Sat Mar 31 2012' } ] }
>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11225 次 |
| 最近记录: |