Javascript 主干过滤多个属性上的多个集合
我希望有人能帮助我,我已经创建了一个工具,可以根据各种属性搜索/过滤集合模型,基本上是模型的所有属性Javascript 主干过滤多个属性上的多个集合,javascript,backbone.js,backbone.js-collections,Javascript,Backbone.js,Backbone.js Collections,我希望有人能帮助我,我已经创建了一个工具,可以根据各种属性搜索/过滤集合模型,基本上是模型的所有属性 filterUsers: function (collection, filterValue) { var filteredCollection; if (filterValue === "") { return collection.toJSON(); } return filteredCollection = collection.filt
filterUsers: function (collection, filterValue) {
var filteredCollection;
if (filterValue === "") {
return collection.toJSON();
}
return filteredCollection = collection.filter(function (data) {
return _.some(_.values(data.toJSON()), function (value) {
if (value != undefined) {
value = (!isNaN(value) ? value.toString() : value);
//var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return value.indexOf(filterValue) >= 0;
}
});
});
}
现在,对于一个集合,这可以正常工作,但是否可以筛选多个2个集合?并返回一组合并的结果?如果要筛选两个集合,可以对两个集合运行筛选函数,然后合并结果
if (filterValue === "") {
return collection.toJSON();
}
var filterThroughValue = function(data) {
return _.some(_.values(data.toJSON()), function(value) {
if( value != undefined ) {
value = (!isNaN(value) ? value.toString() : value);
//var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return value.indexOf(filterValue) >= 0;
}
});
};
return filteredCollection = _.union(
collection1.filter(filterThroughValue),
collection2.filter(filterThroughValue)
);
}
基本上,您要声明您的筛选函数您希望如何筛选您的值,然后将其作为.filter函数的参数传递
签出下划线中的u.union函数: