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对象的条目
,检查某些值是否匹配(如果数组),或者普通值是否匹配(如果字符串)