【发布时间】:2022-06-15 22:03:03
【问题描述】:
我想根据时间安排从 API 获取的数据。 这是数组中的一个对象。
{
"orderId": "xxxxxxxxxxxxx",
"amount": 10,
"status": "CREATED",
"transactionTime": 1651498914,
"type": "ADD",
"mode": "UPI",
"bankAccountId": {
"bankAccountNumber": "xxxxxxxxxxxxx",
"ifsc": "XXXX XXXX XXXX"
}
}
我想根据 transactionTime 降序排列数组,这是一个纪元时间。
我最初的方法。
data.map((item) => item.transactionTime)
.sort()
.reverse()
.map((item) => {
return data.find((i) => i.transactionTime == item);
})
此代码运行良好,但正如您所见,这不是一个好方法。 所以我想要一个更优化的解决方案。有人建议使用优先队列。
【问题讨论】:
-
"这是一个纪元时间。" -- 不是每个时间和日期系统都是一个时代相对值吗?
-
.map( e => Array.find( x => ) )有 O(n^2) 运行时间 - 不要那样做。 -
您只需要
const sorted = Array.from( data ).sort( ( x, y ) => x.transactionTime - y.transactionTime );
标签: javascript arrays sorting priority-queue epoch