我有这个漂亮的函数遍历集合中的模型以获取属性和值。如果找到该值则返回true。
在浏览了很多文档之后,我仍然对如何遍历这个问题感到困惑 正确收集以及如何搜索它。由于underscorejs(在我的情况下是lodash)被挂钩到主干上,我会用.each遍历集合
我没有在if (model.get(attribute)===value)
之后添加其他内容,因为它会返回false
在遍历整个集合之前。回调函数听起来像不必要的并发症 - 但也许我错了(我几个月前开始使用JS)
我会很高兴提示和/或更好的解决方案;-)与explonation。 提前谢谢。
我使用requirejs,这就是为什么我传递了_,Bacbkone ......
以下是该集合的外观:
function (_, Backbone, AppModels) {
var QueriesCollection = Backbone.Collection.extend({
model : AppModels.QueryModel,
search: function (attribute, value) {
var found = false;
this.each(function (model) {
if (model.get(attribute)===value) {
found = true;
}
});
return found;
}
});
return {
QueriesCollection: QueriesCollection
};
});
答案 0 :(得分:6)
你也可以使用下划线some
(又名any
),它与你的search
函数几乎相同,只是它需要一个函数参数作为它的谓词,而不是一个键/值:
如果列表中的任何值通过迭代器真值测试,则返回true。如果找到了真正的元素,则短路并停止遍历列表。
实现使用它更直接:
search: function (attribute, value) {
return this.some(function(x) {
return x.get(attribute) === value;
});
}