使用过滤器和下划线过滤对象数组
Filtering array of objects with filter and underscore
请检查此代码
var arr = [{ name:"Toyota, minivan", id:"506", size: "large" }, { name:"Honda Moose", id:"619", size: "big" }, { name:"Honda Civic", id:"619", size: "mini" },{ name:"Honda Tree", id:"mini", size: "big" }];
var searchStr=['Toyota'];
var mini = _.filter(arr, function (obj) {
return _.values(obj).some(function (el) {
return el.indexOf(searchStr) > -1;
});
});
console.log(mini);
数据过滤正常,但我想要的是如果 searchStr 数组有多个值它不起作用那么如何使用 searchStr.something 数组中的多个值来做到这一点,比如
var searchStr = ['Toyota','big'];
您只希望 some
的搜索字符串成为 some
属性的一部分。或者,如果您想要独占搜索,您可以使用 _.every
,这样 every 搜索文本就会出现在 some 属性中。
var cars = [...]
var searchInputs = ['Toyota','big'];
var mini = _.filter(arr, function (cars) {
return _.values(obj).some(function (carAttribute) {
return _.some(searchInputs, function(searchText){
return carAttribute.indexOf(searchText) > -1;
})
});
});
请检查此代码
var arr = [{ name:"Toyota, minivan", id:"506", size: "large" }, { name:"Honda Moose", id:"619", size: "big" }, { name:"Honda Civic", id:"619", size: "mini" },{ name:"Honda Tree", id:"mini", size: "big" }];
var searchStr=['Toyota'];
var mini = _.filter(arr, function (obj) {
return _.values(obj).some(function (el) {
return el.indexOf(searchStr) > -1;
});
});
console.log(mini);
数据过滤正常,但我想要的是如果 searchStr 数组有多个值它不起作用那么如何使用 searchStr.something 数组中的多个值来做到这一点,比如
var searchStr = ['Toyota','big'];
您只希望 some
的搜索字符串成为 some
属性的一部分。或者,如果您想要独占搜索,您可以使用 _.every
,这样 every 搜索文本就会出现在 some 属性中。
var cars = [...]
var searchInputs = ['Toyota','big'];
var mini = _.filter(arr, function (cars) {
return _.values(obj).some(function (carAttribute) {
return _.some(searchInputs, function(searchText){
return carAttribute.indexOf(searchText) > -1;
})
});
});