Javascript 主干集合:自定义比较器
我希望:通过主干网进行搜索。按复杂条件收集。更准确地说,我有Javascript 主干集合:自定义比较器,javascript,backbone.js,Javascript,Backbone.js,我希望:通过主干网进行搜索。按复杂条件收集。更准确地说,我有TimePeriodobj的startTime和endTime属性,我想选择属于特定时刻的TimePeriod 示例:我得到的力矩等于12045,我需要遍历时间段集合并检查每个时间段: belongsToTimeperiod: function(timePeriod, moment) { return (timePeriod.startTime < moment && timePeriod.endTime
TimePeriod
obj的startTime
和endTime
属性,我想选择属于特定时刻的TimePeriod
示例:我得到的力矩等于12045,我需要遍历时间段集合并检查每个时间段:
belongsToTimeperiod: function(timePeriod, moment) {
return (timePeriod.startTime < moment && timePeriod.endTime > moment);
}
以及该对象的集合:
var TimePeriods = Backbone.Collection.extend({
model: TimePeriod
});
var searchTerm=。。。;
函数搜索模型(int开始,int结束){
变量i=(开始+结束)/2;
var模型=集合。在(i)处//http://backbonejs.org/#Collection-在
如果(model.get('property')>searchTerm){//Collection在此“属性”上排序
返回搜索模型(开始,i);
}else if(model.getProperty())这就是你要找的吗?@levi否,因为它们使用方法过滤器。问题是时间段
是一个连续时间段的大集合。所以我需要的是二进制搜索,而不是对所有元素进行迭代。
var TimePeriods = Backbone.Collection.extend({
model: TimePeriod
});
var searchTerm=...;
function searchModel(int start, int end){
var i=(start+end)/2;
var model=collection.at(i); //http://backbonejs.org/#Collection-at
if(model.get('property')>searchTerm){ //Collection is sorted on this 'property'
return searchModel(start,i);
}else if(model.getProperty()<searchTerm){
return searchModel(i,end);
}
return model;
}