Javascript 保持不变JS映射的顺序

Javascript 保持不变JS映射的顺序,javascript,immutable.js,Javascript,Immutable.js,我有一个如下所示的JavaScript数组 const data = [ { id: 19, date: 01.01.2001, content: ... }, { id: 85, date: 10.10.2002, content: ... }, { id: 1113, date: 07.09.2018, content: ...

我有一个如下所示的JavaScript数组

const data = 
[
   {
       id: 19,
       date: 01.01.2001,
       content: ...
   },
   {
       id: 85,
       date: 10.10.2002,
       content: ...
   },
   {
       id: 1113,
       date: 07.09.2018,
       content: ...
   },
   ...
];
最初,当数据来自服务器时,
数据
是未排序的。我按
日期对
数据进行排序,将其保存在
数组中以保持其顺序

const data = 
[
   {
       id: 1113,
       date: 07.09.2018,
       content: ...
   },
   {
       id: 85,
       date: 10.10.2002,
       content: ...
   },
   {
       id: 19,
       date: 01.01.2001,
       content: ...
   },
   ...
];
但是,访问id为
的元素将导致整个数组的迭代。使用此结构将它们存储在
对象中

const obj = 
{
    19: {
            date: 01.01.2001,
            content: ...,
         },
    85: {
            date: 10.10.2002,
            content: ....,
        },
    1113: {
            date; 07.09.2018,
            content: ...
          }
}
将使访问更容易,但不会进行排序。 我正在寻找一种不可变的JS方式来将数据存储在
映射中,比如
obj
,但保持其顺序,但
日期
应该是
id


如何按
日期
排序,但将
id
保留为

Myp本身是未排序的。也许您可以将对象保留在数组中,并构建一个用于快速访问的映射(可能是以惰性的方式,或者在数组上进行一次急切的迭代)。最佳解决方案取决于数据量以及您正在使用它做什么

我想您现在已经解决了这个问题。但是,不可变。orderedMap似乎是您的完美解决方案


“但该对象存在性能问题”-这不是因为存储原始顺序的原因吗?@zerkms抱歉,我编辑了我的问题。现在,如果您正在更改对象的构造方式以加快提取所需数据的速度,您就不会有问题了,你为什么在乎它的顺序?我想这是显而易见的。添加了一个带有问号的句子