Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6中的动态条件链接函数_Javascript_Arrays_List_Ecmascript 6 - Fatal编程技术网

Javascript ES6中的动态条件链接函数

Javascript ES6中的动态条件链接函数,javascript,arrays,list,ecmascript-6,Javascript,Arrays,List,Ecmascript 6,我正在构建具有多个搜索条件的搜索功能 是否有任何方法可以动态生成包含自定义方法的单行可链接过滤器 数据: 锡 事件日期 活动 装置 描述 1. 12/12/20 体育 菲比特 通过跑步存档奖励 2. 13/12/20 体育 苹果 通过跑步获得奖励 3. 14/12/20 购买 NA 购买硬币以供购买 4. 14/12/20 体育 菲比特 通过跑步存档奖励 5. 16/12/20 体育 菲比特 通过跑步存档奖励 您可以创建键/值上带有闭包的函数,并期望检查对象 DATEBETWEEN需要格式为的日

我正在构建具有多个搜索条件的搜索功能

是否有任何方法可以动态生成包含自定义方法的单行可链接过滤器

数据:

锡 事件日期 活动 装置 描述 1. 12/12/20 体育 菲比特 通过跑步存档奖励 2. 13/12/20 体育 苹果 通过跑步获得奖励 3. 14/12/20 购买 NA 购买硬币以供购买 4. 14/12/20 体育 菲比特 通过跑步存档奖励 5. 16/12/20 体育 菲比特 通过跑步存档奖励
您可以创建键/值上带有闭包的函数,并期望检查对象

DATEBETWEEN
需要格式为的日期

const
数据=[{SN:1,EventDate:'2020-12-12',活动:'Sports',设备:'Fitbit',说明:'Archived rewards via running'},{SN:2,EventDate:'2020-12-13',活动:'Sports',设备:'Apple',说明:'Acquired rewards via running'},{SN:3,事件日期:'2020-12-14',活动:'Purchase',设备:'NA',说明:'Purchased coins for Purchase'},{SN:4,事件日期:'2020-12-14',活动:'Sports',设备:'Fitbit',说明:'通过跑步存档奖励'},{SN:5,EventDate:'2020-12-16',活动:'Sports',设备:'Fitbit',描述:'通过跑步存档的奖励'},
输入=[
{字段:'Activity',操作:'EQUALS',值:'Sports'},
{字段:'EventDate',操作:'DATEBETWEEN',值:{startDate:'2020-12-12',endDate:'2020-12-15'},
{字段:'Devices',操作:'INCLUDES',值:['Fitbit','Apple']},
{字段:'All',操作:'GLOBAL',值:'Run'}
],
运算符={
等于(k,v){返回o=>o[k]==v;},
DATEBETWEEN(k,v){returno=>o[k]>=v.startDate&&o[k]v.includes(o[k]);},
全局(k,v){v=v.toLowerCase();返回o=>Object.values(o)。一些(s=>s.toString().toLowerCase().includes(v));}
},
filters=input.map({Field,Operation,Values})=>operators[Operation](Field,Values)),
结果=data.filter(o=>filters.every(f=>f(o));
console.log(结果);

.as控制台包装{最大高度:100%!重要;顶部:0;}
为什么
Values
是字符串或无效语法?您想生成JavaScript代码吗?我不太明白这里的问题…请同时修复代码中的语法错误。是的,但是由于语法错误,示例不清楚。
Values
是否应该等于带有一些no的字符串n-valid JS代码…不容易看到您在那里做什么。修复语法错误和消除歧义对您来说不会很难…没有反应?另外,
global
…的第一个参数是“All”,在实现中,您有
对象作为参数。不确定如何匹配…是否要澄清所有这些?