【发布时间】:2020-04-13 13:18:14
【问题描述】:
目前,我从一个空数组开始,reportSections。然后我循环遍历date group 和record date 的值,并将唯一值添加到我的reportSections 数组中。
let reportSections = [];
let dataGroups = new Set();
let recordDates = new Set();
data.forEach(item => {
dataGroups.add(item['date group']);
recordDates.add(item['record date']);
});
for (const [index, value] of [...dataGroups].entries())
reportSections.push({
id: value,
name: [...recordDates][index]
});
这是一个小例子,我将循环遍历 data 变量中的数据:
[
{
'record date': '2020-04-01',
'date group': 'MONTH START'
},
{
'record date': '2020-04-01',
'date group': 'MONTH START'
},
{
'record date': '2020-04-05',
'date group': 'MONTH TO DATE - Week 1'
},
{
'record date': '2020-04-05',
'date group': 'MONTH TO DATE - Week 1'
}
]
然而,现在我需要做一些与我的代码的其他三个部分非常相似的事情,但它的设置有点不同,因为需要将值添加到对象而不是数组,因此不能使用 push() 方法。这是当前代码的样子:
let filteredData = {
monthstart: _.filter(data, {'date group': 'MONTH START'}),
monthstart_week1: _.filter(data, {'date group': 'MONTH TO DATE - Week 1'}),
monthstart_week2: _.filter(data, {'date group': 'MONTH TO DATE - Week 2'}),
};
let combinedData = {
monthstart: [],
monthstart_week1: [],
monthstart_week2: [],
};
let reportMap = {
monthstart: {},
monthstart_week1: {},
monthstart_week2: {},
};
通常我有这个硬编码,但由于我将处理动态日期并且在给定的月份中可能有不同的周数,所以我需要有一些动态的东西。 我的问题是,如何循环数据并在 filteredData、combinedData 和 reportMap 中显示每个唯一的 date group,就像我对 reportSections 数组所做的那样? p>
旁注:
combinedData 和 reportMap 中的空数组和对象将保持原样,仅更改实际名称(即monthstart 会动态更改,但[] 或{} 不会。使用@ 987654339@,名称也会改变(即monthstart),我还需要date group 中的相同值用于_.filter() 部分。
我希望我能够足够清楚地解释这一点。如果我需要解释更多,请告诉我,我可以为我的问题添加更多细节,但任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: javascript arrays loops javascript-objects