[英]Iterate Over JavaScript Object, Compare Values and Return Key
我有一個對象idTime
,它具有 id 的鍵值對和采取行動的時間。 我無法在 JavaScript 中按值迭代它,然后從中檢索密鑰。 這是確切的對象:
const idTime = {
"3b2f93b8-72a7-4d85-a366-bb17f830b43c": "2021-07-29 08:51:31+00:00",
"533e9079-7dd2-4719-b502-69a4ca4b60e6": "2021-06-30 22:14:42+00:00",
"5df5ba4b-2e87-4bdd-a14e-49db6bb11770": "2021-07-29 16:46:38+00:00",
"e0adeb25-9870-4185-a947-ae6f4aae2455": "2021-07-29 16:51:05+00:00",
};
我知道如何打印它們:
const printIds = () => {
for (var key in idTime ) {
if (idMap.hasOwnProperty(key)) {
console.log(key + " -> " + idTime [key]);
}
}
};
我需要檢索最新的id
,在這種情況下是e0adeb25-9870-4185-a947-ae6f4aae2455
,所以我需要以這種確切的形式比較時間。 我已經閱讀了有關 JavaScript 減速器的一些文章,但我不確定這是否可行。
const idTime = { "3b2f93b8-72a7-4d85-a366-bb17f830b43c": "2021-07-29 08:51:31+00:00", "533e9079-7dd2-4719-b502-69a4ca4b60e6": "2021-06-30 22:14:42+00:00", "5df5ba4b-2e87-4bdd-a14e-49db6bb11770": "2021-07-29 16:46:38+00:00", "e0adeb25-9870-4185-a947-ae6f4aae2455": "2021-07-29 16:51:05+00:00", }; const maxDate = new Date(Math.max(...Object.keys(idTime).map(x => Date.parse(idTime[x])))); console.log({maxDate}); const maxDateId = Object.keys(idTime).filter(id=>Date.parse(idTime[id])==Date.parse(maxDate))[0]; console.log({maxDateId});
您想獲取最新的項目或 ID。 為此,您可以按降序對idTime
對象進行排序,然后將第一項與最新項一樣。
要執行排序,您必須將對象轉換為數組。 為此,您可以使用Object.entries()
以便我們可以同時保留key
和value
。
const idTime = { "3b2f93b8-72a7-4d85-a366-bb17f830b43c": "2021-07-29 08:51:31+00:00", "533e9079-7dd2-4719-b502-69a4ca4b60e6": "2021-06-30 22:14:42+00:00", "5df5ba4b-2e87-4bdd-a14e-49db6bb11770": "2021-07-29 16:46:38+00:00", "e0adeb25-9870-4185-a947-ae6f4aae2455": "2021-07-29 16:51:05+00:00", }; // This makes an array of array with [key, value] pair const entries = Object.entries(idTime); // Sort the entries array desc order entries.sort((a, b) => { return new Date(b[1]).getTime() - new Date(a[1]).getTime(); }); // The first entry is the latest item after sorting console.log('latest id: ', entries[0][0]);
.as-console-wrapper{min-height: 100%!important; top: 0}
您需要根據時間降序對對象的條目進行排序,並獲取最新日期的 id。
const idTime = { "3b2f93b8-72a7-4d85-a366-bb17f830b43c": "2021-07-29 08:51:31+00:00", "533e9079-7dd2-4719-b502-69a4ca4b60e6": "2021-06-30 22:14:42+00:00", "5df5ba4b-2e87-4bdd-a14e-49db6bb11770": "2021-07-29 16:46:38+00:00", "e0adeb25-9870-4185-a947-ae6f4aae2455": "2021-07-29 16:51:05+00:00", }; let sortedIdTime = Object.entries(idTime).sort((curr,nxt)=>new Date(nxt[1]) - new Date(curr[1])); let firstEntry = sortedIdTime[0]; let resultantId = firstEntry[0]; console.log(resultantId);
使用數組排序方法和數組解構;
const idTime = { "3b2f93b8-72a7-4d85-a366-bb17f830b43c": "2021-07-29 08:51:31+00:00", "533e9079-7dd2-4719-b502-69a4ca4b60e6": "2021-06-30 22:14:42+00:00", "5df5ba4b-2e87-4bdd-a14e-49db6bb11770": "2021-07-29 16:46:38+00:00", "e0adeb25-9870-4185-a947-ae6f4aae2455": "2021-07-29 16:51:05+00:00", }; const sortedTime = Object .entries(idTime) .sort(([key, value] )=> new Date(value[1]) - new Date(value[0]))[0][0] console.log(sortedTime);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.