繁体   English   中英

按多个条件过滤数组

[英]Filter Array by Multiple Criteria

我正在寻找过滤以下数组:

const array = 
[{city: "Fullerton", techName: ["Sean"], routeName: ["Route 1"], routeDay: "Monday"},
{city: "Long Beach", techName: ["Sean", "Greg"], routeName: ["Route 1", "Route 3"], routeDay: "Monday"}, 
{city: "Huntington Beach", techName: ["Sean"], routeName: ["Route 1"], routeDay: "Monday"}];

使用以下数组:

const filters = [{type: "routeDay", filter: "Monday"}, {type: "techName", filter: "Greg"}];

我正在过滤带有多个过滤器的表,但我无法弄清楚如何通过两个过滤器进行过滤。 我可以通过一个或另一个过滤,但一个和另一个。

任何帮助表示赞赏,谢谢!!

您可以过滤数组,并为每个项目使用Array.every()迭代filters数组,并检查值是否可接受。

从当前对象中按type获取相关值。 如果它是一个数组,检查它是否包含filter的值。 如果不比较 value 和filter

 const array = [{city: "Fullerton", techName: ["Sean"], routeName: ["Route 1"], routeDay: "Monday"}, {city: "Long Beach", techName: ["Sean", "Greg"], routeName: ["Route 1", "Route 3"], routeDay: "Monday"}, {city: "Huntington Beach", techName: ["Sean"], routeName: ["Route 1"], routeDay: "Monday"}]; const filters = [{type: "routeDay", filter: "Monday"}, {type: "techName", filter: "Greg"}]; const result = array.filter(o => filters.every(({ type, filter }) => { const value = o[type]; return Array.isArray(value) ? value.includes(filter) : value === filter; })); console.log(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM