我是Backbone的初学者,想知道2种中哪一种更有效,以及期望的处理方式。

类型A:创建一个新集合,该集合接受先前操作的结果,并从新集合中拔出密钥

result = new Backbone.Collection(this.collection.where({"x":y})).pluck("z")


要么

类型B:集合的链接功能-过滤器和地图中的数组。

result = this.collection.chain()
        .filter(function(model){model.get("x")===y)
        .map(function(model){model.get("z")})
        .value()

最佳答案

基准测试是关键:链接胜过对手1,更清晰2。
比较请参见http://jsperf.com/backbone-chaining-vs-new-collection 3。

当然,如果您真正关心速度,可以放弃中间人并使用香草JavaScript(可以进一步优化,查找数组遍历技术)

var i, l, result = [];
for (i=0, l=this.collection.length; i<l; i++) {
    if (this.collection.models[i].get('x') === y)
        result.push(this.collection.models[i].get('z'));
}




1取决于您的确切设置/数据样本/风速
2请注意,您的filtermap函数缺少return
进行了3次测试:http://jsfiddle.net/nikoshr/cek502wp/

10-05 20:54
查看更多