我有一个看起来像这样的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
来自服务器时未排序。我用data
对date
进行排序,将其保留在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方式,但要保持其顺序date
。 key
应该是id
。
我如何按date
进行排序,但将id
保留为key
?
答案 0 :(得分:1)
Myp本身未排序。也许您可以将对象保留在数组中,并构建一个用于快速访问的映射(也许以惰性方式,或者渴望一次遍历数组)。最佳解决方案取决于数据量以及您在处理数据
答案 1 :(得分:0)
我想您现在已经解决了这个问题。但是 Immutable.orderedMap 对于您来说似乎是一个完美的解决方案。
https://immutable-js.github.io/immutable-js/docs/#/OrderedMap