为什么过滤具有多个条件的对象数组会返回一个空数组?

瓦西里奥斯·察卡利斯

假设我们有一个名为汽车的对象数组:

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 == 0return false,您可能想将您的条件更改为:

  if(filter[key].length && !filter[key].includes(elem[key]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正确过滤具有多个条件的对象数组和一个数组

为什么在日期对象上调用 Object.getOwnPropertyDescriptors 会返回一个空数组?

PowerShell - 为什么在 Hashtable 中查找数组会返回一个空数组?

为什么从sqlite返回值会返回一个空数组

为什么领事健康检查会返回一个空数组?

为什么这个简单的过滤器返回一个空数组?

在javascript中基于具有多个数组的另一个对象的过滤来过滤数组

为什么slice返回一个空数组?

为什么这个函数返回一个空数组?

为什么我的函数返回一个空数组?

从具有多个约束的另一个对象数组返回唯一对象数组

OCaml为什么一个空数组具有多态类型?

为什么 laravel 返回一个空数组,因为有很多关系?

删除具有数组中属性的对象会留下一个空对象

过滤对象的快速数组以删除在其一个或多个属性中具有相同值的对象

根据另一个值数组过滤对象数组,返回一个空列表

对于具有一个或多个元素的数组,为什么JavaScript“数组中的长度”会给出不同的结果?

我在一个函数中有一个本地字符数组——当我返回数组名称时,为什么返回值是空的?

通过具有重复键的另一个数组过滤对象数组

Javascript - 过滤包含具有来自另一个数组的值的数组的对象

具有多个条件的过滤器数组,其中一些可以为空

为什么一个数组中值的变化会影响另一个不参与操作的数组(具有完全相同的值)上的值?

如何过滤对象数组并只返回一个没有数组括号的结果

用一个条件过滤多个数组

如何基于另一个对象ID数组过滤具有MongoDB对象ID的对象数组?

C++ 为什么访问数组中的元素会返回一个指针?

为什么 Mypy 认为添加两个 Jax 数组会返回一个 numpy 数组?

比较两个数组对象,如果满足一个或多个对象的条件则返回整个数组

为什么从lower_bound中减去一个数组会返回一个取消引用的值?