Filtruj zbiór kręgosłupa według wartości atrybutu
Mam zdefiniowany model i kolekcję:
var Box = Backbone.Model.extend({
defaults: {
x: 0,
y: 0,
w: 1,
h: 1,
color: "black"
}
});
var Boxes = Backbone.Collection.extend({
model: Box
});
Gdy kolekcja jest wypełniona modelami, potrzebuję nowej kolekcji pudełek wykonanych z modeli pudełek, które mają określony atrybut koloru zawarty w pełnej kolekcji, robię to w ten sposób:
var sorted = boxes.groupBy(function(box) {
return box.get("color");
});
var red_boxes = _.first(_.values(_.pick(sorted, "red")));
var red_collection = new Boxes;
red_boxes.each(function(box){
red_collection.add(box);
});
console.log(red_collection);
To działa, ale uważam to za trochę skomplikowane i nieefektywne. Czy istnieje sposób na zrobienie tego samego w prostszy sposób?
Oto kod, który opisałem:http://jsfiddle.net/HB88W/1/