Backbone.js 在.filter()完成后,如何从集合中提取.pull()值?

Backbone.js 在.filter()完成后,如何从集合中提取.pull()值?,backbone.js,Backbone.js,是否有一种干净的方法来过滤集合,然后提取值?我所知道的唯一解决方法是重新初始化集合: window.CardList = Backbone.Collection.extend(...); var Cards = new CardList; Cards.filter(...).pluck('values') 或在过滤后映射输出: new CardList(Cards.filter(...)).pluck('values') 这看起来很奇怪,因为它有一个非常好的.pluck()方法。Card

是否有一种干净的方法来过滤集合,然后提取值?我所知道的唯一解决方法是重新初始化集合:

window.CardList = Backbone.Collection.extend(...);

var Cards = new CardList;

Cards.filter(...).pluck('values')
或在过滤后映射输出:

new CardList(Cards.filter(...)).pluck('values')

这看起来很奇怪,因为它有一个非常好的.pluck()方法。CardList一个主干集合,一旦被过滤或删除,它就变成了一个主干模型数组

一系列主干模型不能再被提取,除非你将其包装在另一个主干集合中(这是原始帖子提到的)

其他方法包括:

  • 用下划线将其包装并链接:((Cards.filter(…).chain().pull('attributes').pull('value').value()

  • 只需映射出值(我最终使用了这个解决方案,它最终是最干净的):

  • 清洁蒸馏器:

    _.map(Cards.filter(...), function(m) { return m.get('value') })
    
    Cards.pluck.call({models: Cards.filter(...)}, 'values');
    
    _.map(Cards.filter(...), function(m) { return m.get('value') })
    
    _.invoke(Cards.filter(...), 'get', 'value')