在数组上过滤n次

The*_*rus 2 javascript arrays filter

如果有人想选择"T恤"和"绿色",我想重新创建网上商店的过滤器.显然很容易.但是,如果他们选择多种颜色,我该怎么做?

我知道我可以像这样链接:colors.filter(col => col.name =='green' || col.name =='black')但是如果我想要选择10种颜色或20种颜色,那么目前这种颜色不是很容易扩展.我可以用某种方式映射颜色然后过滤吗?

我尝试了这个,但它不起作用:

colors = ['black', 'red']
col = [{name: 'green'}, {name: 'black'}, {name: 'red'}]
colors.forEach((c) => col.filter((ca) => ca.name === c))`
Run Code Online (Sandbox Code Playgroud)

Mát*_*nka 5

你可以使用Set:

let filterColors = new Set();
filterColors.add('green');
filterColors.add('black');

colors.filter(col => filterColors.has(col.name));
Run Code Online (Sandbox Code Playgroud)