创建一个将基于字符串的时间转换为毫秒的函数使我面临挑战。

那是我得到的字符串格式:


  “ hours:minutes:seconds.milliseconds”


因此,例如,此值将需要返回3010220。


  “ 0:50:10.220”


该函数必须短而一行。
我很想知道我在哪里可以改善以下功能,因为它没有通过标准。如何将其变成一个衬套?

function toMilliseconds(time){
  return time.match(/[0-9]+/g).map(function(val,s,a){
    return s != 3 ? +val * ((Math.pow(60,a.length - s -2) * 1000)) : +val;
  }).reduce(function(a,b){
    return a+b;
  },0);
}

最佳答案

有很多不同的方法。

这是我想到的最短方法(使用ES6):



var str = "0:50:10.220";

var ms = (s=>1E3*s[2]+6E4*s[1]+36E5*s[0])(str.split(':'));

console.log(ms);

10-06 12:24