gpt4 book ai didi

javascript - 获取按日期过滤的 JSON 数据并从中创建一个新数组

转载 作者:行者123 更新时间:2023-12-03 01:30:40 25 4
gpt4 key购买 nike

所以我在 Javascript 和 JSON 数据方面遇到了这个问题。当我从某个 URL 获取数据时,我会在带有字符串的 JSON 文件中获取数据。现在我的问题是。其中一个字符串是我需要使用的日期,因此当日期小于当前日期时,它将形成一个新字符串,以便我可以正确地将数据显示到我正在设计的 HTML 中。 ?

我的项目的想法是,它显示当天列出的事件,并且我只想显示即将发生的事件,而不是已经结束的事件。

注意日期采用 ISO_8601 格式。我也是脚本编写新手。预先感谢您。

最佳答案

我不知道你的数据是什么样的,但一般来说,你需要执行两个步骤:

  • 将字符串转换为实际的 Date 对象
  • 过滤掉过去的日期

转换非常简单,只需 new Date(<ISO 8601 string>) :

new Date("2018-06-12"); // -> Tue Jun 12 2018 01:00:00 GMT+0100
new Date("2018-07-13"); // -> Fri Jul 13 2018 01:00:00 GMT+0100

可以使用 Array.filter 过滤掉过去的事件。你给它一个返回True的函数或False ,并为每个数组项运行它。函数返回的项目 True被放入一个新数组中:

[1, 3, 4, 6, 7].filter(number => number > 4); // -> [6, 7]
[1, 3, 4, 6, 7].filter(number => number <= 4); // -> [1, 3, 4]

因此,要过滤过去的日期/时间,您只需将它们与今天的日期进行比较即可。唯一棘手的事情是给出像 2018-06-07 这样的字符串(仅日期,未指定时间)至 new Date(…)将时间设置为当前时间:

new Date("2018-06-07"); // -> Thu Jun 07 2018 01:00:00 GMT+0100

如果您只需要按天进行比较,而不是按小时甚至分钟进行比较,则将时间设置为午夜过后会很方便:

(new Date("2018-06-07")).setHours(0) // -> Thu Jun 07 2018 00:00:00 GMT+0100

所以,放在一起时:

const data = {
events: [
{ name: "Event 1", date: "2018-06-12" },
{ name: "Event 2", date: "2018-07-10" },
{ name: "Event 3", date: "2018-07-12" },
{ name: "Event 4", date: "2018-07-13" },
{ name: "Event 5", date: "2018-08-01" }
]
}

const today = (new Date()).setHours(0) // past midnight

const todayAndFutureEvents = data.events.filter(event => (new Date(event.date)) >= today);

console.log(todayAndFutureEvents);

如果您的事件发生在多个时区,可能会出现另一个问题,但这可能超出了这个问题的范围......

关于javascript - 获取按日期过滤的 JSON 数据并从中创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com