Javascript 转换具有属性值的对象的更快方法是什么;HH:MM:SS“;串;N分钟;?

Javascript 转换具有属性值的对象的更快方法是什么;HH:MM:SS“;串;N分钟;?,javascript,Javascript,我有上百个结构像 { movieName: 'xyz', time: '02:15:50' timeAsText: null } 我需要根据属性“time”将文本设置为“136分钟”。 秒应该四舍五入 你能告诉我什么是更快的方法吗?试试这个 var obj = { movieName: 'xyz', time: '02:15:50' timeAsText: null } var a = obj.time.split(':');

我有上百个结构像

{
movieName: 'xyz',
time: '02:15:50'
timeAsText: null
}
我需要根据属性“time”将文本设置为“136分钟”。 秒应该四舍五入

你能告诉我什么是更快的方法吗?

试试这个

  var obj = {
        movieName: 'xyz',
        time: '02:15:50'
        timeAsText: null
    }
    var a = obj.time.split(':'); // split it at the colons
    var minutes = parseInt(+a[0]) * 60  + parseInt(+a[1])  + Math.round(parseInt(+a[2])/60); 
    obj.timeAsText = minutes + " minutes";

最好的办法可能是这样,而且,从数量上看,类似的答案可能是唯一的一个

-首先,使用split(“:”)使字符串成为可解析字符串的数组

-然后,将值解析为int。使用parseInt 此时,您应该有一个这样的数组

 [number_of_hours, number_of_minutes,number_of_second]
-然后只需添加不同的值,如

obj.timeAsText = array[0]*60+array[1]+Math.round(array[2]/60)+' minutes';
完整答案:

var arr=obj.time.split(':').forEach(function(entry){
    entry=parseInt(entry);
});
obj.timeAsText= arr[0]*60+arr[1]+Math.round(array[2]/60)+" minutes";

我尝试了两种方法();第一次使用,第二次使用普通的
for…loop
。从演示中可以看出,普通循环速度要快得多:

var out = [];
for (var i = 0, l = arr.length; i < l; i++) {
  var obj = arr[i];
  var time = obj.time.split(':').map(Number);
  if (time[2] > 0) { time[1]++; }
  obj.timeAsText = (time[0] * 60) + time[1] + ' minutes';
  out.push(obj);
}
var out=[];
对于(变量i=0,l=arr.length;i0){time[1]+;}
obj.timeAsText=(时间[0]*60)+时间[1]+'分钟';
向外推(obj);
}

我不知道它是否最快,但它是最容易阅读的:

var test = {
    movieName: 'xyz',
    time: '02:15:50',
    timeAsText: null
};

test.time.replace(/^(\d{2}):(\d{2}):(\d{2})$/, function(m, p1, p2, p3) {
    // Multiplication and division implicitly converts p1 and p3 to numbers
    return p1*60 + parseInt(p2) + Math.ceil(p3/60);
});

您已经尝试了什么,以便我们知道不添加什么作为答案?还有,这些物体是如何固定的?它们是否在一个数组中?对象是否在服务器端生成?