javascript - 如何使用一组选项过滤列表
问题描述
我想通过将选项数组传递到也是一个数组的字段来过滤列表
let myFilters = ['filter1', 'filter4'];
let myArray = [
{ name: 'item1', options: ['filter1', 'filter5'] },
{ name: 'item2', options: ['filter1', 'filter2'] }
];
let myResultFiltered = myArray.filter(item =>
myFilters.includes(item.options))
解决方案
像这样的东西应该工作:
let myFilters = ['filter1', 'filter4'];
let myArray = [
{ name: 'item1', options: ['filter1', 'filter5'] }, // OUTPUT FOR: OR
{ name: 'item2', options: ['filter1', 'filter2'] }, // OUTPUT FOR: OR
{ name: 'item3', options: ['filter1', 'filter4'] }, // OUTPUT FOR: OR, AND
{ name: 'item4', options: ['filter2', 'filter3'] } // OUTPUT FOR: NONE
];
// Includes each entry that fulfills AT LEAST ONE of the filter options
let myResultFilteredOR = myArray
.filter(item => myFilters
.some(myFilter=> item.options // any ONE filter
.some(option => option === myFilter) // is AT LEAST ONCE in options
)
);
// Includes each entry that fulfills ALL of the filter options
let myResultFilteredAND = myArray
.filter(item => myFilters
.every(myFilter=> item.options // EVERY filter
.some(option => option === myFilter) // is AT LEAST ONCE in Options
)
);
推荐阅读
- javascript - 在 child_process 中并行运行多次相同的命令
- security - Mule 4 安全属性占位符不起作用
- java - %Like% 在spring JpaRepository中查询N个字段
- .net - 在 Delphi 7 中调用 C++ DLL 函数
- java - Keycloak 无法获取访问令牌
- javascript - 如何更新数组列表排序?
- css - 如何并行启动 2 个动画
- ios - Swift - 执行 segue 时视图控制器不会取消初始化
- python - 使用 Python 读取堆叠标题 Excel 表
- arrays - mongodb 在嵌套数组或列表中查找