Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Backbone.js中的groupBy对集合进行分组?_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 如何使用Backbone.js中的groupBy对集合进行分组?

Javascript 如何使用Backbone.js中的groupBy对集合进行分组?,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,示例集合(仅显示模型): 如何使用下划线.js的groupBy函数对具有相同日期的模型进行分组 您也可以使用pass自定义函数,但在这种情况下,这不是必需的,因为上面的属性快捷方式语法可以正常工作 _.groupBy(data, function(row) { return row.date; }); 演示: > _.groupBy(data, 'date') { 'Thu Mar 29 2012': [ { name: 'Bob', date: 'Thu Mar 29 2012

示例集合(仅显示模型):

如何使用下划线.js的groupBy函数对具有相同日期的模型进行分组

您也可以使用pass自定义函数,但在这种情况下,这不是必需的,因为上面的属性快捷方式语法可以正常工作

_.groupBy(data, function(row) {
    return row.date;
});
演示:

> _.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' } ] }
>

ThiefMaster的答案是完全正确的,但它给我带来了一些困惑,因为我正在搜索一个解决方案,以获得一个backbone.js集合,如标题所示

如果问题对象是主干集合,我们应按日期对模型进行以下分组:

\u.groupBy(collection.models,function(model){
返回模型。获取('日期')
});

我希望它能对您有所帮助

如果您要对实际的主干集合进行分组,您可以使用主干方法groupBy,它隐式地使用下划线u.groupBy功能。在我看来,这是一个更干净的方法

var groups =collection.groupBy(function(model) { return model.get('date'); });

//iterate over groups
for(date in groups) { 
    var models = groups[date];
    console.log('date: '+date); 
    for (var model_idx in models) {  
        console.log('    name: '+ models[model_idx].get('name'));
    }
}
collection.groupBy( function(model){
  return model.get('date');
});
对于那些使用下划线代替下划线的用户,您可以使用
\uu0.method()
访问器获得相同的结果

collection.groupBy(_.method('get', 'date'));

您忘记了日期之前的逗号:是否有方法为每个组设置视图,并在一个模型从一个组移动到另一个组时自动同步这些视图?例如,如果更改模型上的日期,则应将其移动到另一个组,并且视图必须相应地更新。有什么方法可以半自动(可能是使用木偶)或手动完成此操作?这不适用于实际的主干收集,bullfrog的答案是正确的。这是对所问问题的实际答案。这是描述如何使用主干进行分组的答案。上面的答案使用下划线来描述hot to group你甚至可以使用缩写:collection.groupBy('date')@IanS也许你的属性名称不正确,没有任何信息痕迹很难知道原因,但我怀疑我很可能使用的是旧版本的主干网。。。这个答案中的完整代码对我很有用。这也是问题的实际答案。
collection.groupBy(_.method('get', 'date'));