如何解决如何基于动态键使Javascript筛选器值
我有一个记录,需要根据提供的键对其进行过滤,并保留到另一个数组。所以通常我们会这样。.
let date = [];
date.push(data.filter(e => e.date).map(e => e.date));
这将为我提供新日期数组中['2020-09-12','2020-09-12','2020-09-12']
的数据。因此,我现在需要过滤出新数组的动态键。它基于每日,每周,每月,如下所示。现在手动进行操作。.)
如果用户选择每天数据。
let newArray30,newArray20,newArray10= [];
newArray30.push(data.filter(e => e.d_dy_30).map(e => e.d_dy_30));
newArray20.push(data.filter(e => e.d_dy_20).map(e => e.d_dy_20));
newArray10.push(data.filter(e => e.d_dy_10).map(e => e.d_dy_10));
如果用户选择每周数据。
let newArray30,newArray10= [];
newArray30.push(data.filter(e => e.d_wk_30).map(e => e.d_wk_30));
newArray20.push(data.filter(e => e.d_wk_20).map(e => e.d_wk_20));
newArray10.push(data.filter(e => e.d_wk_10).map(e => e.d_wk_10));
如果用户选择每月数据。
let newArray30,newArray10= [];
newArray30.push(data.filter(e => e.d_mt_30).map(e => e.d_mt_30));
newArray20.push(data.filter(e => e.d_mt_20).map(e => e.d_mt_20));
newArray10.push(data.filter(e => e.d_mt_10).map(e => e.d_mt_10));
“我每天,每周,每月,每季度,每年”都会有10行。
我想让它像这样动态。
n30Data.push(data.filter(e =>e.this.getNaming(period,code)).map(e =>e.this.getNaming(period,code)))
//ofcourse this is error
getNaming(period,code){
return 'd'_'+period+'_'+code+'';
}
如何实现上述目标?
解决方法
这将基于动态的filterName
键过滤结果:
function getNaming(period,code){
return 'd_' + period + '_' + code;
}
var filterName = getNaming(period,code);
n30Data.push(data.filter(e => e[filterName]).map(e => e[filterName])