簡體   English   中英

如何從對象 Javascript 數組中檢索花費的最高時間

[英]How to retrive highest time spent from array of object Javascript

我有一個對象數組,我在其中計算了特定 ip 的會話(花費的時間) 我以 hh:mm:ss 格式計算了花費的時間,以便於理解。

[ { start: 'Thu, 10 Jan 2019 06:04:49 GMT',
    end: 'Thu, 10 Jan 2019 06:12:22 GMT',
    total_spend: '00:07:27' },
  { start: 'Thu, 10 Jan 2019 07:58:18 GMT',
    end: 'Thu, 10 Jan 2019 07:59:09 GMT',
    total_spend: '00:00:50' },
  { start: 'Thu, 10 Jan 2019 09:28:00 GMT',
    end: 'Thu, 10 Jan 2019 09:59:46 GMT',
    total_spend: '00:31:46' } ]

現在我想要上面數組中最高的 total_spend

與所有應為“00:31:46”(31 分 46 秒)的對象相比,花費的最長時間

我無法理解我將如何進行比較,因為到目前為止我看到的所有這種格式的比較都轉換為日期然后進行比較。 要么我可以將它轉換為 ms 然后我應該比較。 有沒有其他方法可以執行此操作?

你不能只比較字符串嗎? 如果您執行 'stringA' < 'stringB',JavaScript 將比較兩個字符串,就好像它們要根據 unicode 值按字母順序排序一樣,因此較低的時間將被正確評估為“小於”較高的時間。

像這樣:

const sessions = [ 
  { start: 'Thu, 10 Jan 2019 06:04:49 GMT',
    end: 'Thu, 10 Jan 2019 06:12:22 GMT',
    total_spend: '00:07:27' },
  { start: 'Thu, 10 Jan 2019 07:58:18 GMT',
    end: 'Thu, 10 Jan 2019 07:59:09 GMT',
    total_spend: '00:00:50' },
  { start: 'Thu, 10 Jan 2019 09:28:00 GMT',
    end: 'Thu, 10 Jan 2019 09:59:46 GMT',
    total_spend: '00:31:46' } 
]

let highest = '00:00:00';
for (let session of sessions) {
  if (session.total_spend > highest) {
    highest = session.total_spend
  }
}
console.log(highest)

您可以通過從startend屬性中獲取差異來sort降序會話數組進行sort ,然后只訪問第一個元素。

 let sessions = [ { start: 'Thu, 10 Jan 2019 06:04:49 GMT', end: 'Thu, 10 Jan 2019 06:12:22 GMT', total_spend: '00:07:27' }, { start: 'Thu, 10 Jan 2019 07:58:18 GMT', end: 'Thu, 10 Jan 2019 07:59:09 GMT', total_spend: '00:00:50' }, { start: 'Thu, 10 Jan 2019 09:28:00 GMT', end: 'Thu, 10 Jan 2019 09:59:46 GMT', total_spend: '00:31:46' } ] sessions.sort((a,b) => (new Date(b.end) - new Date(b.start)) - (new Date(a.end) - new Date(a.start))); console.log(sessions[0].total_spend);

另一種方法是使用reduce方法。

 let sessions = [ { start: 'Thu, 10 Jan 2019 06:04:49 GMT', end: 'Thu, 10 Jan 2019 06:12:22 GMT', total_spend: '00:07:27' }, { start: 'Thu, 10 Jan 2019 07:58:18 GMT', end: 'Thu, 10 Jan 2019 07:59:09 GMT', total_spend: '00:00:50' }, { start: 'Thu, 10 Jan 2019 09:28:00 GMT', end: 'Thu, 10 Jan 2019 09:59:46 GMT', total_spend: '00:31:46' } ] let index = sessions.reduce((iMax, x, i, arr) => (new Date(x.end) - new Date(x.start)) > new Date(arr[iMax].end) - new Date(arr[iMax].start) ? i : iMax, 0); console.log(sessions[index].total_spend);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM