Javascript 保持不变JS映射的顺序
我有一个如下所示的JavaScript数组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: ...
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抱歉,我编辑了我的问题。现在,如果您正在更改对象的构造方式以加快提取所需数据的速度,您就不会有问题了,你为什么在乎它的顺序?我想这是显而易见的。添加了一个带有问号的句子