Javascript ES6中的动态条件链接函数
我正在构建具有多个搜索条件的搜索功能 是否有任何方法可以动态生成包含自定义方法的单行可链接过滤器 数据: 锡 事件日期 活动 装置 描述 1. 12/12/20 体育 菲比特 通过跑步存档奖励 2. 13/12/20 体育 苹果 通过跑步获得奖励 3. 14/12/20 购买 NA 购买硬币以供购买 4. 14/12/20 体育 菲比特 通过跑步存档奖励 5. 16/12/20 体育 菲比特 通过跑步存档奖励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需要格式为的日
您可以创建键/值上带有闭包的函数,并期望检查对象
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”,在实现中,您有对象作为参数。不确定如何匹配…是否要澄清所有这些?