2014-03-12 61 views
0

我想添加一個改進我的一個currenct過濾器,它需要一個集合並按評分(1/2/3/4/5)過濾它。主幹最好的方式來按評級篩選模型

目前它只能通過這些(1/2/3/4/5)數字中的一個進行過濾,但我想過濾使用它們中的一部分或它們的一部分。排序並不重要。

filter_by_rating: function(rating) { 
    var filtered; 
    if (!!rating && rating !== '') { 
     filtered = this.filter(function(model) { 
      return model.get("rating") >= parseInt(rating) && model.get("rating") <= parseInt(rating) + 0.5; 
     }); 
     return new Collection(filtered); 
    } else { 

    } 
return this; 
} 

如果在當前函數只接受一個數字,我想通過一串數字,例如:「3,4,5」,它應該過濾,並用評級僅使模型的3 4和5

另外,如果我在陣列中的數字[ 「3」, 「4」, 「5」]我將它同時過濾 「3.5」, 「4.5」

+0

你應該使用下劃線(或橫條)來做這種事情。有一個_groupBy函數可以給你一些你想要的東西。 –

回答

0

使用indexOf來檢查評級是否在你的數組中。

filter_by_rating: function(rating){ 
    if(!Array.isArray(rating)) { 
    rating = [rating]; 
    } 

    return new Collection(this.filter(function(model){ 
    return rating.indexOf(Math.floor(model.get('rating'))) !== -1; 
    })); 
} 
+0

請注意,如果數組中的評分爲3,我想過濾3和3.5,那該怎麼做? – Alon

+0

放置您的模型值。查看更新的答案。 –

+0

謝謝!輝煌的答案! – Alon