【发布时间】:2021-12-29 03:02:04
【问题描述】:
我的精神障碍让我无法前进。
我有一个数组,我将用以下代码举例说明:
let cars = [
{ brand: "Ford", year: "2012", color: "White", doors: "5", model: "One" },
{ brand: "Chevrolet", year: "2021", color: "Red", doors: "5", model: "Two" },
{ brand: "Chevrolet", year: "2000", color: "Black", doors: "5", model: "Three" },
{ brand: "Citroen", year: "2004", color: "Pink", doors: "3", model: "Four" },
];
我需要将所有满足有 5 个门条件的汽车存储在一个变量中。嗯,
let carsWithFiveDoors = cars.filter(({ doors }) => doors == "5");
但我也需要它同时满足两个条件。更清楚地说,对于只有那些 5 门汽车的新阵列,我需要应用另一个过滤器,使我只能拥有那些不是雪佛兰品牌的汽车,也不是红色的汽车。当我通过简单的逻辑将此方法应用于我的数组时,就会出现问题:
carsWithFiveDoors.filter(({ brand, color }) => brand !== "Chevrolet" && color !== "Red");
此过滤器的结果是以下数组:
let newArrayOfCars = [
{
brand: "Ford",
year: "2012",
color: "White",
doors: "5",
model: "One",
},
{
brand: "Toyota",
year: "2000",
color: "Black",
doors: "5",
model: "Three",
},
{
brand: "Citroen",
year: "2004",
color: "Pink",
doors: "3",
model: "Four",
},
];
使用这种方法,我实现了生成一个没有任何雪佛兰汽车的数组,但我需要过滤掉那些同时是红色和雪佛兰品牌的汽车。
我怎样才能做到这一点?我想了很多,我想我已经筋疲力尽了。
【问题讨论】:
-
为什么 Citreon 会出现在那个数组中?它有三个门。您在原始列表中也没有丰田,为什么它会出现在最终输出中?
标签: javascript arrays filter