链接与创建新的收藏 - 效率

时间:2015-02-04 12:28:00

标签: javascript backbone.js

我是Backbone的初学者,想要知道哪两个更有效率和预期的做事方式。

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

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

OR

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

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

1 个答案:

答案 0 :(得分:2)

基准测试是关键:链接胜利 1 并且更清晰 2 。 有关比较 3 ,请参阅http://jsperf.com/backbone-chaining-vs-new-collection

当然,如果你真的关心速度,你会抛弃中间人并使用vanilla 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/