javascript - 如何按小时对数据进行排序?

标签 javascript jquery arrays sorting

我有一个这种类型的对象数组

Obj = { timeEnd:"06:45 AM",
        timeStart:"04:23 AM"
      }

数组是特定日期的[obj1,obj2, ....]类型。

这个数组定义了在事件上花费了多少时间。

我想重新创建或将此数组转换为时间明智的数组,例如

obj = { '4-5 AM' : 37,
        '5-6 AM' : 60,
        '6-7 AM' : 45
      }

我试过搜索也无济于事。我是菜鸟。

如果您需要任何其他信息,请告诉我。最终目标是创建一个按小时计算的 chart.js 图表

最佳答案

您可以拆分 24 小时值并计数,直到达到目标小时,然后将剩余的分钟数相加。

function getHourParts(object) {

    function getKey(h) {
       return h + '-' + (h + 1);
    }

    function getTime(s) {
        var t = s.split(':').map(Number);
        return { h: t[0], m: t[1] };
    }

    var result = {},
        start = getTime(object.timeStart),
        end = getTime(object.timeEnd);

    while (start.h < end.h) {
        result[getKey(start.h)] = 60 - start.m;
        ++start.h;
        start.m = 0;
    }
    result[getKey(end.h)] = end.m - start.m;
    return result;
}

console.log(getHourParts({ timeStart: '04:23', timeEnd: '06:45' }));
console.log(getHourParts({ timeStart: '12:03', timeEnd: '12:05' }));

关于javascript - 如何按小时对数据进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38052957/

相关文章:

python - 通过符号将实值 numpy 数组转换为二进制数组

c# - 如何限制 Ajax 日历上的日期范围?

javascript - jQuery 选择器在从 ajax 解析的 HTML 中的行为不符合预期

javascript - 如何在 ajax 上使用 this.children

javascript - jQuery 100%垂直滚动(滑动滚动)

javascript - 为什么这个 JavaScript 正则表达式替换会破坏这个 jQuery 代码?

arrays - 所有元素小于或等于 A[i] 的最长子数组

C - 追加到我的数组中?

javascript - 制作我自己的 Jquery 视差效果

javascript - 有没有办法在 Typescript 或 ES6 中查看类的所有静态变量和方法?