javascript - 对对象进行排序,同时保持相同的数据结构
问题描述
我想按时间戳对以下结构中接收的一些数据进行排序:
{
art_AYNgc8KwfbewFawAsogtH1Eii5eu7kKfjM3CrEpFhzWY: [
timestamp: '1613713166629',
art_type: 'Type: image/jpeg - Size: 6442.15 Ko - Dimensions: 4000 x 6000 px',
art_name: 'Name 1',
],
art_FJPKZQKfkfzNnF6AZRiayzVdKEyCg3ZJc4Kb6hTEZMUH: [
timestamp: '1613868065000',
art_type: 'Type: image/png - Size: 8475.15 Ko - Dimensions: 3000 x 2000 px',
art_name: 'Name 2',
],
art_HNXph9RtNC9MT7oK2oCvVboyEUUf8bKQLvhQbpyVRbKR: [
timestamp: '1613799567000',
art_type: 'Type: image/jpg - Size: 3475.15 Ko - Dimensions: 1500 x 1000 px',
art_name: 'Name 3'
]
}
但是在结果中保持完全相同的数据结构(具有键值的对象)。
我尝试了以下方法:
let sortedData = Object.values(entryData ).sort(function(a,b){
return new Date(b.timestamp) - new Date(a.timestamp);
});
问题是我得到了不同的结构(数组与对象):
[
[
timestamp: '1613713166629',
art_type: 'Type: image/jpeg - Size: 6442.15 Ko - Dimensions: 4000 x 6000 px',
art_name: 'Name 1',
],
[
timestamp: '1613799567000',
art_type: 'Type: image/jpg - Size: 3475.15 Ko - Dimensions: 1500 x 1000 px',
art_name: 'Name 3'
],
[
timestamp: '1613868065000',
art_type: 'Type: image/png - Size: 8475.15 Ko - Dimensions: 3000 x 2000 px',
art_name: 'Name 2',
]
]
预先感谢您的帮助。
解决方案
要让它有顺序,你必须使用某种数组,或者使用JS 的 Map 对象,或者重建一个对象,这样可以保持插入顺序。
所以你需要使用上述方法之一,有秩序,也许用它来映射到你的原始对象。或者您也可以只保留数组或 Map 对象中的所有数据,而忽略原始数据对象。
推荐阅读
- ruby - 是否可以保持非字母符号完整?
- javascript - 如何在 JS 中使用 AND 和 OR 运算符进行浏览器检测
- java - Java 错误 - 在相应的 try 语句的主体中永远不会抛出异常
- r - 如何在ggpubr中调整图例的大小
- laravel - 尝试从控制器调用方法时 Laravel api 404
- javascript - React setstate 仅适用于一个浏览器
- powershell - 如何将计数器添加到 Powershells ForEach-Object 函数中
- javascript - 有没有办法通过只提取某些值来减少嵌套的 json?
- java - Java中的无符号模数
- algorithm - 激光雷达:如何根据初始地图扫描确定运动/对象?