React中消息数组无法按最新消息优先排序,求解决方法
消息数组按最新时间排序的问题修复
你的排序逻辑出错的原因是:Array.sort()的回调函数需要返回负数、0、正数来定义元素的排序顺序,但你当前返回的是布尔值(a.createdAt > b.createdAt会得到true/false),布尔值会被强制转换为1或0,无法正确实现降序排序。
正确写法
根据createdAt的类型选择对应的代码:
情况1:createdAt是时间戳数字(如1700000000000)
const feedSort = [...feed].sort((a, b) => b.createdAt - a.createdAt);
情况2:createdAt是Date对象
const feedSort = [...feed].sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
通用写法(兼容多种时间格式)
const feedSort = [...feed].sort((a, b) => { if (a.createdAt < b.createdAt) return 1; if (a.createdAt > b.createdAt) return -1; return 0; });
调整后,feedSort里的元素就会按createdAt从大到小排列,最新的消息会排在最前面,之后再用map渲染即可正常展示。
内容的提问来源于stack exchange,提问作者Rogestav
相关产品推荐
相关产品推荐

