保持不可变JS Map的顺序

时间:2018-10-24 07:51:05

标签: 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: ...
   },
   ...
];

最初,data来自服务器时未排序。我用datadate进行排序,将其保留在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: ...
          }
}

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

我如何按date进行排序,但将id保留为key

2 个答案:

答案 0 :(得分:1)

Myp本身未排序。也许您可以将对象保留在数组中,并构建一个用于快速访问的映射(也许以惰性方式,或者渴望一次遍历数组)。最佳解决方案取决于数据量以及您在处理数据

答案 1 :(得分:0)

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

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