javascript 首先Map最新消息- React

qxsslcnc  于 2023-02-21  发布在  Java
关注(0)|答案(3)|浏览(115)

我试着Map我的消息数组,以便最新的消息排在第一位。我尝试了几种方法,但没有任何变化,你知道我做错了什么吗?

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

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

mznpcxlj1#

在编写map循环后尝试此操作。

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

vom3gejh2#

我不知道在javascript中减去Date字符串时的具体行为,但你应该像这样将它们作为Date对象减去:

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

wydwbb8l3#

您所提供的代码似乎是正确的,可以根据createdAt字段对消息进行排序。但是,sort()方法返回一个排序数组,并且不修改原始数组。因此,您需要将排序数组赋给一个新变量(在本例中为feedSort),然后Map到该排序数组。
下面是一个更新的代码片段,它应该可以Map消息的排序数组,以便最新的消息排在第一位:

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字段。

相关问题