保持不可变 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
来自服务器时未排序。我按 date
对 data
进行排序,将其保持在 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
,但保持其顺序 date
。 key
应该是 id
.
如何按 date
排序,但将 id
保持为 key
?
Myp 本身是未排序的。也许你可以将你的对象保存在数组中,并构建一个映射以便快速访问(可能以惰性方式,或者急切地迭代数组一次)。最佳解决方案取决于数据量和您使用它做什么
我想你现在已经解决了这个问题。但是 Immutable.orderedMap 对你来说似乎是一个完美的解决方案。
https://immutable-js.github.io/immutable-js/docs/#/OrderedMap
我有一个 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
来自服务器时未排序。我按 date
对 data
进行排序,将其保持在 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
,但保持其顺序 date
。 key
应该是 id
.
如何按 date
排序,但将 id
保持为 key
?
Myp 本身是未排序的。也许你可以将你的对象保存在数组中,并构建一个映射以便快速访问(可能以惰性方式,或者急切地迭代数组一次)。最佳解决方案取决于数据量和您使用它做什么
我想你现在已经解决了这个问题。但是 Immutable.orderedMap 对你来说似乎是一个完美的解决方案。
https://immutable-js.github.io/immutable-js/docs/#/OrderedMap