Javascript 在阵列上筛选n次

Javascript 在阵列上筛选n次,javascript,arrays,filter,Javascript,Arrays,Filter,如果有人想选择“tshirts”和“green”,我想重新创建网上商店的过滤器。显然,这很容易。但是,如果他们选择了多种颜色,我该怎么做 我知道我可以这样链接:colors.filter(col=>col.name='green'| | col.name='black'),但是如果我想要选择10种颜色或20种颜色,这目前不是很好扩展。我能以某种方式映射颜色,然后过滤吗 我试过了,但没有成功: colors = ['black', 'red'] col = [{name: 'green'}, {n

如果有人想选择“tshirts”和“green”,我想重新创建网上商店的过滤器。显然,这很容易。但是,如果他们选择了多种颜色,我该怎么做

我知道我可以这样链接:
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))`
如果他们选择了多种颜色,我该怎么做

您可以使用或方法

colors=['黑色','红色']
col=[{name:'green'},{name:'black'},{name:'red'}]
所选变量=列过滤器(prod=>colors.includes(prod.name))

console.log(选中)您只需使用
集合

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

colors.filter(col => filterColors.has(col.name));

您可以为最终结果创建一个名为
selectedColor
的新数组,以便使用匹配的颜色推送对象

colors=[‘黑色’、‘红色’];
col=[{name:'green'},{name:'black'},{name:'red'}];
var selectedColor=[];
颜色。forEach((c)=>col.filter((ca)=>{
如果(ca.name==c){
选择颜色。推送(ca);
}
}));

console.log(selectedColor)您可以使用数组。包括:

colors=['黑色','红色']
cols=[{name:'green'},{name:'black'},{name:'red'}];
var filtered=cols.filter(c=>colors.includes(c.name));
console.log(过滤)您应该使用和

const colors=['黑色','红色']
const col=[{name:'green'},{name:'black'},{name:'red'}]
let filtered=col.filter(ca=>colors.includes(ca.name))

console.log(已筛选)
[1]。indexOf(1)
返回
0
。可能您想查看
!==-改为1
。@6502是的,那是个打字错误。我的错。谢谢你的发现。