使用过滤器和下划线过滤对象数组

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;
        })    
    });
});