将数组按照时间重新降序排序
在写笔记列表页面时,发现从服务器获取的笔记列表包含最新更新时间 lastts,当我们想将最新更新的条目展示在最上端时,我们需要排序数组,将数组按照时间重新排序,排序规则为最新的时间条目放在最前面。
这样我们就可以在笔记列表中让用户看到最新更新的内容了。
我们需要将其封装为函数,方便调用。
函数代码如下:
// 按照更新时间排序的函数
sortNotesByLastTs: function(notes) {
return notes.slice().sort((a, b) => {
// 将时间字符串转为时间戳比较
const timeA = new Date(a.lastts).getTime();
const timeB = new Date(b.lastts).getTime();
// 降序排列(最新的在前)
return timeB - timeA;
});
},
当运行之后,发现时间戳格式和服务器返回格式不一致,我们需要重新调整函数,服务器返回格式 YYYY-MM-DD HH:mm:ss,本地函数使用的时间格式 ISO 8601 格式。
调整后的代码如下:
// 按照更新时间排序的函数(适配"YYYY-MM-DD HH:mm:ss"格式)
sortNotesByLastTs: function(notes) {
return notes.slice().sort((a, b) => {
// 解析自定义时间格式
const parseTime = (timeStr) => {
if (!timeStr) return 0;
// 替换空格为T,使其符合ISO格式
const isoFormat = timeStr.replace(' ', 'T');
return new Date(isoFormat).getTime() || 0;
};
const timeA = parseTime(a.lastts);
const timeB = parseTime(b.lastts);
// 降序排列(最新的在前)
return timeB - timeA;
});
},
推荐还是调整服务器端,让返回的时间格式转为 ISO 8601 格式。