Javascript 如何在JS中过滤多个字符串?

Javascript 如何在JS中过滤多个字符串?,javascript,filter,ecmascript-6,include,filtering,Javascript,Filter,Ecmascript 6,Include,Filtering,我希望能够过滤数组中的多个字符串(类型)。例如,我想在下面的数据结构中过滤类型肉和类型水果。 我想要实现的是一个过滤数据对象 const data = [{type: "meat", food: "hamburger"}, {type:"fruit", food:"banana"}, {type:"fish", food: "red snapper"}, {type:"vegetables", food:"fungi"}] let filter1 = 'meat' let filter2 =

我希望能够过滤数组中的多个字符串(类型)。例如,我想在下面的数据结构中过滤类型和类型水果。 我想要实现的是一个过滤数据对象

const data = [{type: "meat", food: "hamburger"}, {type:"fruit", food:"banana"}, {type:"fish", food: "red snapper"}, {type:"vegetables", food:"fungi"}]

let filter1 = 'meat'
let filter2 = 'fruit'

const filteredData = data.filter( post => post.type.includes(filter1, filter2) ? post:'');

// My expected result after filtering: [{type: "meat", food: "hamburger"}, {type:"fruit", food:"banana"}]
不幸的是,它返回4个结果,而不是上面预期的2个结果


我知道如何在像_underline.js这样的库中处理这个问题,但我想在现代EcmaScript中实现它。

首先创建一个包含
类型的数组,然后可以对该数组使用
.includes
测试。(当前,
post.type.includes(filter1,filter2)
不起作用,因为
includes
只接受一个参数)

const data=[{类型:“肉”,食品:“汉堡包”},{类型:“水果”,食品:“香蕉”},{类型:“鱼”,食品:“红鲷鱼”},{类型:“蔬菜”,食品:“真菌”}]
让过滤器1=‘肉’
让过滤器2=‘水果’
常量过滤器=[filter1,filter2];
常量filteredData=data.filter(({type})=>filters.includes(type));

console.log(filteredData)感谢您提供了这些清晰的示例。帮助我更好地理解这个概念。我还有一个问题;如果您想在每个类型都包含两个实例的情况下进行过滤,比如类型:{type:[“meat”,“american”],food:hamburger},那么如何实现这种方法呢?这会稍微复杂一些,迭代filter对象的
条目
,检查
某些值是否匹配(如果数组),或者普通值是否匹配(如果字符串)