首先映射最新消息 - React

问题描述 投票:0回答:2

我正在尝试映射我的消息数组,以便最新的消息排在第一位。 我已经尝试了几种方法,但没有什么可以改变的,知道我做错了什么吗?

const feedSort = [...feed].sort((a, b) => a.createdAt > b.createdAt);


{feedSort.map((data) =>
                   ......the data ......
)}

javascript reactjs arrays mapping reverse
2个回答
0
投票

在你写的那个地图循环之后试试这个。

const feedSort = [...feed].sort((a, b) => b.createdAt - a.createdAt);


0
投票

您提供的代码似乎在正确的轨道上,可以根据 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 字段添加到您的消息对象。

© www.soinside.com 2019 - 2024. All rights reserved.