javascript - 从 Backbone 集合中检索特定属性的列表

标签 javascript json backbone.js underscore.js

我正在寻找一种方法,从 Backbone 集合中检索某种特定属性的数组。

var SomeModel = Backbone.Model.extend({
    defaults: function() {
        return {
            attr1: "something",
            attr2: "something",
            attr3: "darkside"
        };
    }
});

var SomeCollection = Backbone.Collection.extend({
    model: SomeModel,
    url: '/data.json',
});

现在假设我有类似上面的东西,我只想要一个只有属性“attr3”的集合/数组/类似物。有没有什么好的方法可以做到这一点(不是通过手动迭代 SomeCollection 并构建一个新的集合)?我对下划线函数“filter”的理解是,它基于某个前提返回整个 SomeModel,即这不是我想要的。想法?

谢谢

最佳答案

如果你只想要一个属性,你可以使用_.pluck

SomeCollection.pluck('attr3');

对于多个属性,可以组合_.map关于收藏和_.pick在模型上

SomeCollection.map(function (model) {
    return model.pick('attr2', 'attr3');
});

还有一个演示 http://jsfiddle.net/nikoshr/qpyXc/1/

或者,使用 _.invoke 以获得更简洁的版本

SomeCollection.invoke('pick', 'attr2', 'attr3');

http://jsfiddle.net/nikoshr/qpyXc/3/

关于javascript - 从 Backbone 集合中检索特定属性的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546014/

相关文章:

javascript - jquery run 函数中的 click() 无需真正单击元素

javascript - 在 MVC Controller 中获取 img

javascript - 将足球数据 api 与 Angular 结合使用

mysql - Node.js mysql响应格式

javascript - 调用了 Backbone Model.parse 但没有效果

javascript - 不同状态的 mustache 模板

javascript - 如何构建滑动水平菜单。 CSS

javascript - reast ai sap 对话的回发

javascript - JSONSchema 和验证子对象属性

javascript - Backbone.js - 自定义从 "fetch()"返回的数据的组织