Javascript Backbone.js过滤器集合
我正在尝试通过一些数组值筛选集合。我想做的是返回一个包含我得到的匹配项的新集合。我将整数数组与整数集合进行比较。但如果比较值大于10,则不起作用。因此,新的过滤集合的整数永远不会超过10。只有从1到9的整数。为什么呢 这是代码Javascript Backbone.js过滤器集合,javascript,backbone.js,Javascript,Backbone.js,我正在尝试通过一些数组值筛选集合。我想做的是返回一个包含我得到的匹配项的新集合。我将整数数组与整数集合进行比较。但如果比较值大于10,则不起作用。因此,新的过滤集合的整数永远不会超过10。只有从1到9的整数。为什么呢 这是代码 filter: function(f) { //f is an array containing ints, like [2,14,9,3] etc var filter = this.collection.filter(function(o){
filter: function(f) { //f is an array containing ints, like [2,14,9,3] etc
var filter = this.collection.filter(function(o){
var accept = false;
$(f).each(function(i,val){
if(_.indexOf(o.get('tags'), val) >-1){
accept = true;
}
})
return accept;
});
var filtered = new PeopleCollection(filter);
new PeopleView({
el: this.$('.peoplelist'),
collection: filtered
});
}
如果
f
是一个数组
,那么为什么要尝试将它包装在jQuery对象中:$(f)
?你想通过这种奇怪的方式实现什么?迭代数组元素?您可以通过数组的内置方法实现这一点:我希望找到2个数组中的所有匹配项,然后创建一个包含所有匹配索引的新数组(已筛选)。请尝试将您的比较器逻辑记录到控制台中:\ u0.indexOf(o.get('tags'),val)>-1这可能是您的问题所在。确实如此。问题是我已经运行了indexOf,这将不起作用。假设它比较2和12。然后它会选择12分之2作为匹配。但事实并非如此。我如何解决这个问题?这就是为什么它适用于indez小于10的所有项目。