组合同一数组中两个对象的属性

时间:2015-08-10 19:07:10

标签: javascript jquery arrays object

如果我有

category_hours = {
   Class: [
              {
                  hour:2,
                  minute:2
              },{
                  hour:1,
                  minute:1
              }
          ]
}

如何将小时和分钟加在一起,以便我有3小时3分钟?

我尝试了这个jquery.each循环,但它只输出每个小时和分钟,它似乎没有应用任何数学。

jQuery.each(category_hours.Class, function() 
{
    var totalHours = 0;
    var totalMins = 0;

    totalHours += parseInt(this.hour) * 60
    totalMins += parseInt(this.minute)

    var totalTime = totalHours + totalMins;
    var realMin = totalTime % 60;
    var realHour = Math.floor(totalTime / 60); 

    $('#classHr').append(realHour);
    $('#classMin').append(realMin);
})

2 个答案:

答案 0 :(得分:1)

在每个函数之外声明totalHourstotalMins

var totalHours = 0;
var totalMins = 0;

jQuery.each(category_hours.Class, function() 
{
    totalHours += parseInt(this.hour) * 60;
    totalMins += parseInt(this.minute);
})

var totalTime = totalHours + totalMins;
var realMin = totalTime % 60;
var realHour = Math.floor(totalTime / 60);
$('#classHr').append(realHour);
$('#classMin').append(realMin);

答案 1 :(得分:0)

这是Array.prototype.reduce()的意思的后代。

var o = category_hours.Class.reduce(function(previousValue, currentValue) {
  return {
    hour: previousValue.hour + currentValue.hour,
    minute: previousValue.minute + currentValue.minute
  };
});

完成此操作后,您可以轻松地模拟分钟数,以获得您追踪的最终数据。

o.hour += ~~(o.minute / 60);
o.minute = o.minute % 60;