我想根据时间从最早到最新对这些对象进行排序。 (与现在相反,即旧消息应出现在数组顶部)。我知道我们可以使用Date.parse
将日期转换为毫秒,然后可以使用function sortBy(a, b) { return a - b;}
函数对其进行排序。
但是我很难将所有内容放在一起。
数据如下:
const messagesArray = [
{id: "92196bd0-b326-4b04-9520-1e8e4814f5e4", message: "ghghhghg", message_time: "2020-03-11T12:50:15.473Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null},
{id: "c5a35080-8f5b-49f7-8216-d6b94e543c44", message: "gghhghgh", message_time: "2020-03-11T12:50:13.103Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null},
{id: "2046cdda-47cd-492f-8534-a58fe5f5091f", message: "dffffffffffffff", message_time: "2020-03-11T12:47:45.598Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null},
{id: "649534f7-34d6-45ae-98b2-ac1189cf9337", message: "ddfffffffff", message_time: "2020-03-11T12:47:44.105Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null}
];
最佳答案
为了按时间对对象进行排序,您首先需要将字符串转换为时间对象(可以比较):
const messagesArray = [
{id: "92196bd0-b326-4b04-9520-1e8e4814f5e4", message: "ghghhghg", message_time: "2020-03-11T12:50:15.473Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null},
{id: "c5a35080-8f5b-49f7-8216-d6b94e543c44", message: "gghhghgh", message_time: "2020-03-11T12:50:13.103Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null},
{id: "2046cdda-47cd-492f-8534-a58fe5f5091f", message: "dffffffffffffff", message_time: "2020-03-11T12:47:45.598Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null},
{id: "649534f7-34d6-45ae-98b2-ac1189cf9337", message: "ddfffffffff", message_time: "2020-03-11T12:47:44.105Z", interaction_id: "08350527-770e-42eb-ad3c-33a73250bc20", post_user_ref: null}
];
messagesArray.sort((a, b) => {return new Date(a.message_time) - new Date(b.message_time)});
console.log(messagesArray);