【发布时间】:2021-11-21 11:23:29
【问题描述】:
我正在尝试比较日期和时间来处理我的数据。我需要通过检查对象内的updated_at 键来检查哪个是最新数据。
下面我给出了场景。
// below is my data to be manipulat
[{
"is_latest": "",
"created_at": "2021-09-21T21:24:05.000Z",
"updated_at": "2021-09-21T17:53:29.000Z"
}, {
"is_latest": "",
"created_at": "2021-09-22T21:24:05.000Z",
"updated_at": "2021-09-22T17:53:29.000Z"
}, {
"is_latest": "",
"created_at": "2021-09-29T21:24:05.000Z",
"updated_at": "2021-09-29T17:53:29.000Z" // this is the latest data
}]
我正在尝试这样,但是如何在这里使用时刻来比较哪个是最新的。
for (var i = 0; i < data.length; i++) {
if (data[i].updated_at > data[i + 1].updated_at) {
data.is_latest = "true"
}
}
但我没有得到如下预期的结果。
[{
"is_latest": "false",
"created_at": "2021-09-21T21:24:05.000Z",
"updated_at": "2021-09-21T17:53:29.000Z"
}, {
"is_latest": "false",
"created_at": "2021-09-22T21:24:05.000Z",
"updated_at": "2021-09-22T17:53:29.000Z"
}, {
"is_latest": true,
"created_at": "2021-09-29T21:24:05.000Z",
"updated_at": "2021-09-29T17:53:29.000Z"
}]
如何使用map() 或reduce() 来做到这一点?
【问题讨论】:
-
您正在尝试比较字符串日期格式。所以这行不通。您可以在这里了解如何比较 2 个日期。 stackoverflow.com/questions/492994/…
-
为什么不按降序对数据进行排序,得到第一个对象
-
您可以将日期作为字符串进行比较,只要它们采用相同的格式,并且该格式按照从最不特定到大多数(即 ISO 8601)的顺序排列,就像这些一样。不过,您应该使用
localeCompare而不是>或<。 -
你不想使用
map;你想使用reduce。 -
我是这个 es6 的新手。请您帮忙实现预期的结果。
标签: javascript node.js reactjs nodes