【发布时间】:2021-04-01 05:06:42
【问题描述】:
我正在构建具有多个搜索条件的搜索功能。
有什么方法可以动态生成单行可链接过滤器,包括自定义方法。
数据:
| SN | EventDate | Activity | Devices | Description |
|---|---|---|---|---|
| 1 | 12/12/20 | Sports | Fitbit | Archived rewards via running |
| 2 | 13/12/20 | Sports | Apple | Achieved rewards via running |
| 3 | 14/12/20 | Purchase | NA | Purchased coins for purchase |
| 4 | 14/12/20 | Sports | Fitbit | Archived rewards via running |
| 5 | 16/12/20 | Sports | Fitbit | Archived rewards via running |
从下面的过滤条件我期待
| SN | EventDate | Activity | Devices | Description |
|---|---|---|---|---|
| 1 | 12/12/20 | Sports | Fitbit | Archived rewards via running |
| 2 | 13/12/20 | Sports | Apple | Achieved rewards via running |
| 4 | 14/12/20 | Sports | Fitbit | Archived rewards via running |
输入过滤条件:
const input = [
{
Field: 'Activity',
Operation: 'EQUALS',
Values: 'Sports'
},
{
Field: 'EventDate',
Operation: 'DATEBETWEEN',
Values: {startDate:2020-12-12, endDate: 2020-12-15}
},
{
Field: 'Devices',
Operation: 'INCLUDES'
Values: {Fitbit,Apple}
},
{
Field: 'All', // if ALL then all fields else array of fields
Operation: 'GLOBAL',
Values: 'Run'//keyword to search
}
];
类似下面的东西
global(objects, keyword) {
retturn objects.filter(object => Object.values(object).some(i => i.includes(keyword)));
}
const filteredList = FilterModule
.include(field, array)
.equals(field, value)
.equals(field, value)
.global(field, array);
需要根据输入过滤条件生成动态过滤模块,所有条件都是'AND'条件。
仅通过 JavaScript
【问题讨论】:
-
为什么
Values是字符串或无效语法? -
您想生成 JavaScript 代码吗?我真的不明白这里的问题...请同时修复代码中的语法错误。
-
是的,但是由于语法错误,示例不清楚。目前尚不清楚
Values是否应该等于带有一些无效 JS 代码的字符串......很难看到你在那里做什么。修复语法错误并消除歧义对您来说很难...... -
没有反应?此外,
global... 的第一个参数是“All”,并且在实现中您将objects作为参数。不知道如何匹配...想澄清这一切吗?
标签: javascript arrays list ecmascript-6