首页 > 解决方案 > 按地图内数组项内的对象对对象数组进行排序

问题描述

我想按日期对这些 ChatListItem 进行排序chat.messages.date

{
    userChats.map(chat => (
        <ChatLink key={chat._id} to={`/chats/${chat._id}`}>
            <ChatListItem
                partnerName={pickPartnerName(
                    userName,
                    chat.userName1,
                    chat.userName2
                )}
                userImgSrc={DefaultUserAvatar}
                lastMessage={chat.messages[chat.messages.length - 1].body}
                lastMessageDate={chat.messages[
                    chat.messages.length - 1
                ].date.slice(11, 16)}
            />
        </ChatLink>
    ));
}

db 对象如下所示:

const messageSchema = new mongoose.Schema({
    type: {
        type: String
    },
    body: {
        type: String
    },
    author: {
        type: String
    },
    date: {
        type: Date,
        default: Date.now
    }
});

const chatSchema = new mongoose.Schema({
    userName1: String,
    userName2: String,
    messages: [messageSchema]
});

所以我想按这些消息的最后日期排序。日期本身如下所示:2020-01-13 22:22:17.345Z

我将如何做到这一点?

提前致谢!

对不起我可怕的问题标题

这是我实际想要实现的目标的视觉效果。 https://i.stack.imgur.com/zQkxl.png

标签: javascriptreactjs

解决方案


要对你的 chat.messages 进行排序,你可以这样处理

chat.messages.sort((a,b)=>a.date.getTime()-b.date.getTime());

a.date.getTime()-b.date.getTime()现在由您决定通过更改为来获得您想要的订单bdate.getTime()-a.date.getTime()


推荐阅读