reactjs - 在 React 数据库调用不起作用时按日期排序 - 只是先返回最旧的
问题描述
我有一个 Strapi CMS,我正在尝试按最新到最旧的顺序对博客文章进行排序。我通过“published_at”属性来做到这一点。今天早上我做了一些谷歌搜索,并认为最明智的解决方案是使用'sort()'。
但是,它不起作用,我不明白为什么。
这是我正在尝试的代码:
const posts = await strapiInstance.getEntries('blog-posts')
const sortedPosts = posts.sort((a, b) => b.published_at - a.published_at)
console.log(sortedPosts)
控制台日志如下所示:
0 Object
Author: "Jon Nicholson"
published_at: "2020-11-20T08:48:08.875Z"
updatedAt: "2020-12-06T10:59:31.723Z"
1 Object
Author: "Jon Nicholson"
published_at: "2020-11-26T08:51:52.414Z"
updatedAt: "2020-12-06T10:59:44.081Z"
我想知道是否需要在排序之前将其转换为整数?
但任何反馈将不胜感激。
解决方案
published_at
是一个字符串参数,所以如果你对它们使用减法运算,它会返回NaN
. 您可以在控制台上对此进行测试:
"2020-11-20T08:48:08.875Z" - "2020-11-26T08:51:52.414Z"
还有其他两个选项:按字符串比较
const sortedPosts = posts.sort((a, b) =>
(b.published_at > a.published_at)
? 1
: (b.published_at === a.published_at ? 0 : -1)
)
或在将它们转换为日期后进行比较(如果它总是返回有效的日期字符串)
const sortedPosts = posts.sort((a, b) => new Date(b.published_at) - new Date(a.published_at))
推荐阅读
- logging - Google Apps 脚本:记录器不打印
- docker - 运行本地 ansible 创建本地 docker Image
- python - 在 Python 中使用 LiquidFiles 发送电子邮件
- python - for循环中的2个csv文件,输出一个csv文件python
- javascript - 如何从 JSON 制作矩形?
- numpy-slicing - 如何将 np.ix_ 用于子矩阵
- django - 编辑现有对象时,如何在 Django 中保持引用?
- mongodb - 带有抽象类集合的 Kotlin Kmongo 库
- powershell - 如何使用 powershell 批量编辑 dbf 文件?
- next.js - 将图像作为道具传递给 Next.js 中的样式化组件