我试着Map我的消息数组,以便最新的消息排在第一位。我尝试了几种方法,但没有任何变化,你知道我做错了什么吗?
const feedSort = [...feed].sort((a, b) => a.createdAt > b.createdAt); {feedSort.map((data) => ......the data ...... )}
mznpcxlj1#
在编写map循环后尝试此操作。
const feedSort = [...feed].sort((a, b) => b.createdAt - a.createdAt);
vom3gejh2#
我不知道在javascript中减去Date字符串时的具体行为,但你应该像这样将它们作为Date对象减去:
const feedSort = [...feed].sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt));
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字段。
3条答案
按热度按时间mznpcxlj1#
在编写map循环后尝试此操作。
vom3gejh2#
我不知道在javascript中减去Date字符串时的具体行为,但你应该像这样将它们作为Date对象减去:
wydwbb8l3#
您所提供的代码似乎是正确的,可以根据createdAt字段对消息进行排序。但是,sort()方法返回一个排序数组,并且不修改原始数组。因此,您需要将排序数组赋给一个新变量(在本例中为feedSort),然后Map到该排序数组。
下面是一个更新的代码片段,它应该可以Map消息的排序数组,以便最新的消息排在第一位:
在sort()方法中,我们使用B.createdAt - a.createdAt代替a.createdAt〉b.createdAt来比较createdAt的值,这将按降序对数组排序,最新的消息排在最前面。
此外,请确保提要数组实际包含具有createdAt字段的消息。如果createdAt字段不存在,则可能需要修改代码以按其他字段排序,或者向消息对象添加createdAt字段。