我在紀元中有很多次,如下所示:
const times = [1653931370, 1653924170, 1653920570, 1653913370, 1653913370, 1653902570]
所有這些日期都是從 00:00 到 23:59 之間的某一天。現在我需要將這些時間中的每一個分配給一個特定的小時以及該小時的出現次數。我的回復應該如下:
[
{
hour: 0, //00:00
occurs: 4
},
{
hour: 1, //01:00
occurs: 4
},
...
{
hour: 22, //22:00
occurs: 17
},
{
hour: 23, //23:00
occurs: 12
},
]
有人可以幫我解決這個問題嗎?謝謝你的幫助!
uj5u.com熱心網友回復:
映射陣列并使用Date.prototype.getHours方法獲取小時數。
然后使用Array.prototype.reduce對時間進行分組。
const times = [
1653931370, 1653924170, 1653920570, 1653913370, 1653913370, 1653902570,
];
const res = Object.values(
times
.map((t) => new Date(t * 1000).getHours())
.reduce((r, t) => {
r[t] ??= { hour: t, occurs: 1 };
r[t].occurs = 1;
return r;
}, {})
);
console.log(res);
其他相關檔案:
- Array.prototype.map
- 物件值
- 空值合并運算子 (??)
uj5u.com熱心網友回復:
創建新物件。回圈遍歷 all times,例如 for each 。使用這樣的Date類new Date(epoch * 1000).getHours()并存盤那個時間。檢查your_hour新物件上是否存在密鑰。如果沒有,請像myResult[your_hour] = {hour: your_hour, occurances: 1}. 如果確實存在,則像這樣添加到該物件myResult[your_hour].occurances = myResult[your_hour].occurances 1;。這通常是我使用的方法,但有多種解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/483142.html
標籤:javascript 节点.js 打字稿
