假设我们有一个名为汽车的对象数组:
var cars = [
{color: 'Black', horsePower: 120, type: 'suv'},
{color: 'Red', horsePower: 90, type: 'cabriolet'},
{color: 'Yellow', horsePower: 200, type: 'cabriolet'},
{color: 'Black', horsePower: 350, type: 'suv'}
];
我想过滤这个传递多个条件的数组。出于这个原因,我创建了一个过滤器对象。
var filters = {
color: ['Black', 'Red'],
horsePower: [90],
type: []
};
我试过的是:
var output = cars.filter((elem) => {
for (var key in filters) {
if (filters[key].length == 0 || filters[key].indexOf(elem[key]) < 0) {
return false;
}
}
return true;
});
console.log(output);
我期望得到的结果是汽车的第二个索引,但我得到的是一个空数组。
我究竟做错了什么?
如果filter[key].length == 0
您return false
,您可能想将您的条件更改为:
if(filter[key].length && !filter[key].includes(elem[key]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句