我正在尝试映射我的消息数组,以便最新的消息排在第一位。 我已经尝试了几种方法,但没有什么可以改变的,知道我做错了什么吗?
const feedSort = [...feed].sort((a, b) => a.createdAt > b.createdAt);
{feedSort.map((data) =>
......the data ......
)}
在你写的那个地图循环之后试试这个。
const feedSort = [...feed].sort((a, b) => b.createdAt - a.createdAt);
您提供的代码似乎在正确的轨道上,可以根据 createdAt 字段对消息进行排序。但是,sort() 方法返回一个排序后的数组,并没有修改原始数组。因此,您需要将排序后的数组分配给一个新变量(在本例中为 feedSort),然后映射到该排序后的数组。
这是一个更新的代码片段,应该用于映射排序的消息数组,以便最新的消息排在第一位:
const feedSort = [...feed].sort((a, b) => b.createdAt - a.createdAt);
{feedSort.map((data) =>
// ... render the data here ...
)}
在 sort() 方法中,我们使用 b.createdAt - a.createdAt 而不是 a.createdAt > b.createdAt 来比较 createdAt 值。这将按降序对数组进行排序,以便最新消息排在第一位。
此外,请确保您的提要数组实际包含带有 createdAt 字段的消息。如果 createdAt 字段不存在,您可能需要修改代码以按不同的字段排序或将 createdAt 字段添加到您的消息对象。