Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从对象Javascript数组中检索花费的最高时间_Javascript_Arrays - Fatal编程技术网

如何从对象Javascript数组中检索花费的最高时间

如何从对象Javascript数组中检索花费的最高时间,javascript,arrays,Javascript,Arrays,我有一个对象数组,在其中我计算了特定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 201

我有一个对象数组,在其中我计算了特定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' } ]
现在我想从上面的数组中得到最高的总花费,即

与所有应为“00:31:46”(31)的对象进行比较所用的最大时间 分46秒)


我不明白我将如何比较,因为到目前为止,我看到的所有这种格式的比较都转换为日期,然后进行比较。或者我可以把它转换成ms,然后我应该进行比较。是否有其他方法来执行此操作?

您可以通过从
开始
结束
属性中提取差异来对递减会话数组进行排序,然后只访问第一个元素

let sessions=[{开始:'Thu,2019年1月10日06:04:49 GMT',结束:'Thu,2019年1月10日06:12:22 GMT',总花费:'00:07:27'},{开始:'Thu,2019年1月10日07:58:18 GMT',结束:'Thu,2019年1月10日07:59:09 GMT',总花费:'00:00:50'.{开始:'Thu,2019年1月10日09:28:00 GMT',结束:'Thu,总花费:'00:31:46']
sessions.sort((a,b)=>(新日期(b.end)-新日期(b.start))-(新日期(a.end)-新日期(a.start));

console.log(会话[0]。总花费)您不能只比较字符串吗?如果执行“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)

不。。。我不想只为了这个目的而使用任何其他软件包。还有其他建议吗@ritajSo只需手动将其转换为毫秒。如果您想要更高的分辨率,则只能从字符串中获取秒数,格式为您所拥有的格式,显示的仅此而已,即1970年以来的历元时间戳(以毫秒为单位)。使用毫秒也容易得多,只是(最新-第一个)会给你差值,然后将其转换回时间字符串。最好使用
。reduce
Math.max
tq来快速响应和努力:)哇哦!!。。。我以为字符串比较不起作用!。。全面质量管理