Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干集合:自定义比较器_Javascript_Backbone.js - Fatal编程技术网

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;
}