如何根据动态键制作Javascript过滤器值

Posted

技术标签:

【中文标题】如何根据动态键制作Javascript过滤器值【英文标题】:How to make Javascript filter value based on dynamic key 【发布时间】:2020-12-30 14:14:38 【问题描述】:

我有一个记录,需要根据提供的键对其进行过滤并保存到另一个数组。所以通常我们会这样做..

let date = [];
date.push(data.filter(e => e.date).map(e => e.date));

这将在新日期数组中为我提供['2020-09-12','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, newArray20, 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, newArray20, 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+'';
    
  

我怎样才能实现上述目标?

【问题讨论】:

【参考方案1】:

这将根据动态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])
  

【讨论】:

以上是关于如何根据动态键制作Javascript过滤器值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据键进行过滤以选择两个值中的任何一个

javascript/jQuery:如何动态地将属性值转换为对象键? [复制]

如何在现有 Javascript 对象中添加具有值的动态键? [复制]

如何创建要添加到 JavaScript 对象变量的动态键 [重复]

如何创建要添加到 JavaScript 对象变量的动态键 [重复]

如何根据对象数组中的键获取值javascript