遍历数据并将其动态存储在对象中

时间:2020-04-13 13:18:14

标签: javascript arrays loops javascript-objects

当前,我从一个空数组from collections import defaultdict def length_counts(countries): result = defaultdict(int) for country in countries: result[len(country)] += 1 return result 开始。然后,我遍历>>> length_counts(sa_countries) defaultdict(<class 'int'>, {6: 1, 9: 2, 7: 2, 4: 1}) 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]
      });

但是,现在我需要做一些与代码的其他三个部分非常相似的事情,但是设置有点不同,因为需要将值添加到objets而不是数组中,因此不能使用push()方法。这是当前代码的样子:

data

通常我已经对此进行了硬编码,但是由于我将处理动态日期,并且在给定的月份中可能会有不同的星期数,因此我需要在末端进行动态处理。 我的问题是,如何像我对{{1 }}数组?

旁注:

[ { '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' } ] 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: {}, }; 中的空数组和对象将保持原样,仅更改实际名称(即date group将动态更改,但是filteredDatacombinedData不会。使用reportMap时,名称也会更改(即reportSections),并且我还需要combinedData中的相同值才能在{{ 1}}部分。

我希望我能够足够清楚地解释这一点。如果需要更多说明,请告诉我,我可以为问题添加更多详细信息,但我们将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,则想向对象动态添加新的键值对。

您可以这样做:

const myObject = {};
// loop start
  myObject["myDynamicKey"] = "myDynamicValue";
// loop end

或类似的方式,使用传播运算符:

let myObject = {};
// loop start
  myObject = {...myObject, ["myDynamicKey"]: "myDynamicValue"}
// loop end