问答

如何求时间和

作者:admin 2021-08-10 我要评论

我有一个数组,这个数组的长度不定,格式如下: [ {'name':'hj1','optime':'2:27'}, {'name':'hj2','optime':'3:38'}, {'name':'hj3','optime':'0:41'}, {'name'...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

我有一个数组,这个数组的长度不定,格式如下:

[
  {'name':'hj1','optime':'2:27'},
  {'name':'hj2','optime':'3:38'},
  {'name':'hj3','optime':'0:41'},
  {'name':'hj4','optime':'0:6'},
  {'name':'hj5','optime':'8:17'},
  {'name':'hj6','optime':'0:15'},
  {'name':'hj7','optime':'2:46'},
  {'name':'hj8','optime':'0:7'},
  {'name':'hj9','optime':'1:25'},
]

其中,optime就是工作耗时,格式为??小时:分钟。现在我想对这个数组进行求和(该例子的总耗时是19:42),如何实现。

###

image.png

[
  {'name':'hj1','optime':'2:27'},
  {'name':'hj2','optime':'3:38'},
  {'name':'hj3','optime':'0:41'},
  {'name':'hj4','optime':'0:6'},
  {'name':'hj5','optime':'8:17'},
  {'name':'hj6','optime':'0:15'},
  {'name':'hj7','optime':'2:46'},
  {'name':'hj8','optime':'0:7'},
  {'name':'hj9','optime':'1:25'},
].reduce((s,n)=>{
    // console.log(n.optime.match(/(\d+):(\d+)/))
    var time = n.optime.match(/(\d+):(\d+)/)
    s+= +time[1]*60 + (+time[2])
    return s;
}, 0)
###

没明白是没仔细思考还是咋的,String.prototype.split函数可用来分割字符串,获得小时/分钟。遍历一次完事。

###

你这里最小单位是分钟,所以可以以分钟为单位,求取总分钟

比如2:27那就是 2 * 60 + 27,这么累计最会得到总分钟count(按你说的应该是19 * 60 + 42)

然后 h = count / 60 | 0, m = count % 60

###

可以先转换成second,然后求和,然后在转换成mins。

const totalSecs = [
  { name: "hj1", optime: "2:27" },
  { name: "hj2", optime: "3:38" },
  { name: "hj3", optime: "0:41" },
  { name: "hj4", optime: "0:6" },
  { name: "hj5", optime: "8:17" },
  { name: "hj6", optime: "0:15" },
  { name: "hj7", optime: "2:46" },
  { name: "hj8", optime: "0:7" },
  { name: "hj9", optime: "1:25" }
].reduce((secs, { optime }) => {
  const timeArr = optime.split(":");
  const ret = parseInt(timeArr[0], 10) * 60 + parseInt(timeArr[1], 10);
  return secs + ret;
}, 0);

console.log(parseInt(totalSecs / 60, 10) + ":" + (totalSecs % 60));

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 如何求时间和

    如何求时间和

  • 熟练的使用Html css JS 可以在哪找到兼

    熟练的使用Html css JS 可以在哪找到兼

  • 匿名函数的形参和实参

    匿名函数的形参和实参

  • 为什么VUE3.0项目,苹果手机访问页面白

    为什么VUE3.0项目,苹果手机访问页面白

腾讯云代理商
海外云服务器