每日一题
计算给出数组中的字符的平均时间,里面的字符串时间是24小时制的,我们获取N个时间来获取一个平均值,时间精确到分钟,秒数忽略去掉即可。(听说是大厂开胃真题)
思路分析
- 首先我们想要获取平均值,在我们现有的字符串中,我们首先得将字符串转化为可以进行数值统计的真实时间,找最小的数值单位用作统计,所以第一步的目的很明确了,需要将字符串转化为单位为分钟的统计数字。注意数字和字符的隐式转换
let toalM = arr.reduce((pre,cur)=>{
let [h,m] = cur.split(":");
return Number(h)*60 + Number(m) + pre;
},0)
- 第二步,我们需要求分钟的平均数,在N个时间中,获取平均的值,以分钟作为单位。
let toalP = toalM/arr.length;
- 第三步,进行数值处理即可,既然已经拿到了平均的总时间单位了,只需要接下来处理好小时和分钟的关系即可,通过除以60取整得到的是小时数,取余,余数是分钟数。
let H = Math.floor(toalP / 60);
let M = toalP% 60;
H = H<10? `0${
H}`:H;
M = M<10? `0${
M}`:M;
- 最后拼接数据,输出最后的结果
const arr = ["8:15", "6:35", "11:22"];
let toalM = arr.reduce((pre,cur)=>{
let [h,m] = cur.split(":");
return Number(h)*60 + Number(m) + pre;
},0)
let toalP = toalM/arr.length;
let H = Math.floor(toalP / 60);
let M = toalP% 60;
H = H<10? `0${
H}`:H;
M = M<10? `0${
M}`:M;
console.log(H+":"+M);