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

Filtering array of objects with filter and underscore

本文关键字:过滤 对象 数组 下划线 过滤器      更新时间:2023-09-26

请检查此代码

    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 数组中使用多个值来做到这一点。

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

您只希望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;
        })    
    });
});