保持不可变 JS Map 的顺序

Keep order of Immutable JS Map

我有一个 JavaScript 数组,看起来像这样

const data = 
[
   {
       id: 19,
       date: 01.01.2001,
       content: ...
   },
   {
       id: 85,
       date: 10.10.2002,
       content: ...
   },
   {
       id: 1113,
       date: 07.09.2018,
       content: ...
   },
   ...
];

最初,data 来自服务器时未排序。我按 datedata 进行排序,将其保持在 array 中以保留其顺序。

const data = 
[
   {
       id: 1113,
       date: 07.09.2018,
       content: ...
   },
   {
       id: 85,
       date: 10.10.2002,
       content: ...
   },
   {
       id: 19,
       date: 01.01.2001,
       content: ...
   },
   ...
];

但是,访问带有 id 的元素将导致遍历整个数组。使用此结构

将它们存储在object
const obj = 
{
    19: {
            date: 01.01.2001,
            content: ...,
         },
    85: {
            date: 10.10.2002,
            content: ....,
        },
    1113: {
            date; 07.09.2018,
            content: ...
          }
}

将使访问更容易,但不会排序。 我正在寻找一种不可变的 JS 方法来将数据存储在 Map 中,例如 obj,但保持其顺序 datekey 应该是 id.

如何按 date 排序,但将 id 保持为 key

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

我想你现在已经解决了这个问题。但是 Immutable.orderedMap 对你来说似乎是一个完美的解决方案。

https://immutable-js.github.io/immutable-js/docs/#/OrderedMap