【发布时间】:2019-03-28 13:09:49
【问题描述】:
我有一个像这样的 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: ...
}
}
将使访问更容易,但不会排序。
我正在寻找一种不可变的 JS 方式来将数据存储在 Map 中,例如 obj,但保持其顺序但 date。 key 应该是 id。
如何按date 排序,但将id 保留为key?
【问题讨论】:
-
“但是那个有性能问题” ---难道不是因为存储原始订单的原因吗?
-
@zerkms 抱歉,我编辑了我的 Q。
-
现在你没有问题
-
如果您要更改对象的构造方式以更快地提取所需数据,您为什么要关心它的顺序?
-
@zerkms 我认为这很明显。加了一句带问号