【问题标题】:Aggregating a large dataset in es6在 es6 中聚合一个大型数据集
【发布时间】:2018-04-01 11:43:49
【问题描述】:

我想用 JavaScript/ES6 将 5 年的每日数据汇总到每个月的最后一天,但我不知道该怎么做。

有没有人有这样做的理论或方法?我过去没有做过这么繁重的数据操作,所以我什至不知道如何处理这个问题,更不用说最好的方法了。

任何帮助将不胜感激。

我想要实现的目标(得到每个月的最后一天):

[
  {
    x: ‘2018-03-31’,
    y: 27
  },
  {
    x: ‘2018-02-28,
    y: 32
  },
  {
    x: ‘2018-01-30,
    y: 27
  },
  {
    x: ‘2017-12-31’,
    y: 27
  },
  {
    x: ‘2017-11-30,
    y: 32
  },
  {
    x: ‘2017-10-31,
    y: 27
  }
]

当前数据格式:

[
  {
    x: ‘2018-03-31’,
    y: 27
  },
  {
    x: ‘2018-03-30',
    y: 32
  }
  {
    x: ‘2018-03-29’,
    y: 27
  },
  {
    x: ‘2018-03-28',
    y: 32
  }
]

每天持续五年。

【问题讨论】:

  • 写入的数据无效。
  • 我建议您提供输入和预期输出
  • @EvanTrimboli,已更新为预期输出。这是一个海量数据文件,所以我无法添加完整的数据集。
  • @xianshenglu 这个更好。

标签: javascript ecmascript-6


【解决方案1】:

试试这个,filter input 如果x 的下一个日期是1

const input = [
  {
    x: "2018-03-31",
    y: 27
  },
  {
    x: "2018-03-30",
    y: 32
  },
  {
    x: "2018-03-01",
    y: 27
  },
  {
    x: "2018-02-28",
    y: 32
  },
  {
    x: "2018-02-27",
    y: 27
  },
  {
    x: "2018-02-01",
    y: 32
  },
  {
    x: "2018-01-31",
    y: 27
  },
  {
    x: "2018-01-30",
    y: 27
  }
];
let output = input.filter(
  date =>
    new Date(
      new Date(date.x.split("-").join(",")).getTime() + 24 * 60 * 60 * 1000
    ).getDate() === 1
);
console.log(output);

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多