我有包含(例如)30 个项目的 Backbone.js 集合。
我想传递给我的模板过滤集合,其中包含原始集合中的每 3 个项目。
有谁知道如何优雅地完成它? CoffeeScript 代码是首选。
最佳答案
假设这里originalCollection
是您现有的收藏
var newCollection = new Backbone.Collection();
for (var i = 0, l = originalCollection.length; i < l; i++) {
if (i % 3 === 0) { newCollection.add(originalCollection.models[i]); }
}
此代码通过循环遍历每个现有模型来工作,并且仅在索引为 3 的倍数时才将模型添加到新集合中。
你可以通过使用下划线
each
使它更好一点。 Underscore.js 在 Backbone Collections 中公开的方法:var newCollection = new Backbone.Collection();
originalCollection.each(function (model, index) {
if (index % 3 === 0) { newCollection.add(model); }
});
将上述内容转换为 CoffeeScript 的结果是:
newCollection = new Backbone.Collection()
originalCollection.each (model, index) ->
newCollection.add model if index % 3 is 0
关于collections - 按索引过滤 Backbone.js 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839699/