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

时间:2016-02-06 06:59:47

标签: javascript arrays underscore.js

请检查此代码

    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数组中使用多个vales,如

    var searchStr = ['Toyota','big'];

1 个答案:

答案 0 :(得分:0)

您只希望some个搜索字符串成为some属性的一部分。或者,如果您想要独占搜索,则可以使用_.every,这样每个搜索文字都会显示在某些属性中。

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