Javascript 在客户端以何种形式保存聊天列表及其消息

Javascript 在客户端以何种形式保存聊天列表及其消息,javascript,arrays,object,chat,message,Javascript,Arrays,Object,Chat,Message,我有两个选项来存储接收到的数据 1. 2. 在第一个选项中,要使用chatId2 ID在chat中添加消息,我必须循环并找到丢失的chat,但在第二个选项中,我可以获得对象的chatId2属性。 你推荐什么形式 对我的英语很抱歉。谢谢, 这取决于您需要做什么、数据的大小、需求等 通过保留id字段并在需要时循环使用值,可以轻松地组合这些选项。但是,根据您的任务,您可能还需要添加额外的排序。数组将按照您放置对象的顺序保留所有对象,而包含对象的对象可能会变得无序,因此您的消息将不同步,除非您在其上放置

我有两个选项来存储接收到的数据

1. 2. 在第一个选项中,要使用chatId2 ID在chat中添加消息,我必须循环并找到丢失的chat,但在第二个选项中,我可以获得对象的chatId2属性。 你推荐什么形式


对我的英语很抱歉。谢谢,

这取决于您需要做什么、数据的大小、需求等


通过保留id字段并在需要时循环使用值,可以轻松地组合这些选项。但是,根据您的任务,您可能还需要添加额外的排序。

数组将按照您放置对象的顺序保留所有对象,而包含对象的对象可能会变得无序,因此您的消息将不同步,除非您在其上放置索引或时间戳,例如,但这并不好。因此,我建议使用数组并使用:arr[index]引用它们。所以chatId1实际上会被消息[0]引用。如果您真的想通过“chatId0”这样的字符串引用它们,那么您可以使用一个映射数据结构,它可以像数组一样保持它们的顺序,这样您就可以按顺序循环它们,但是您也可以按键引用项,例如“chatId0”。
[
 {
   chatId: 'chatId1',
   author: 'authorId1',
   members: [],
   messages: []
 },
{
   chatId: 'chatId2',
   author: 'authorId2',
   members: [],
   messages: []
 },
...
]
 {
   'chatId1':  {
               author: 'authorId1',
               members: [],
               messages: []
             },
    'chatId2':  {
               author: 'authorId2',
               members: [],
               messages: []
             },
     ...

 }