javascript - 获取按天分组的时间

标签 javascript jquery algorithm

<分区>

我有一个对象:

var daysMapping = { 1: "MON", 2: "TUE", 3: "WED", 4: "THU", 5: "FRI", 6: "SAT", 7: "SUN" };

和一个对象数组:

var timingsArr = [{ StartTime: "09:00:00",  EndTime: "13:00:00",  Days: [2,3,4,5] }, 
 { StartTime: "16:00:00",  EndTime: "19:00:00",  Days: [2,3,4,5,6]},
 { StartTime: "09:00:00",  EndTime: "14:00:00",  Days: [6,7] }];

我需要按以下方式对时间进行分组:

周二至周五

上午 9:00 - 下午 1:00

下午 4:00 - 晚上 7:00

周六

上午 9:00 - 下午 2:00

下午 4:00 - 晚上 7:00

太阳

上午 9:00 - 下午 2:00

我需要用 javascript 编写代码来获得这样的计时。在这里我需要工作日的数据。如果某些天的时间相同,则可以对这些时间进行分组。然而,任何语言的解决方案都被接受。

最佳答案

这是一个试图将相同时间分组到一个日组的提案。

它使用一个对象 grouped 来表示日期和时间,然后使用数组 combined 作为结果集。

我跳过了更改 12 小时时钟显示的部分。

var daysMapping = { 1: "MON", 2: "TUE", 3: "WED", 4: "THU", 5: "FRI", 6: "SAT", 7: "SUN" },
    days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"],
    timingsArr = [{ StartTime: "09:00:00", EndTime: "13:00:00", Days: "[2,3,4,5]" }, { StartTime: "16:00:00", EndTime: "19:00:00", Days: "[2,3,4,5,6]" }, { StartTime: "09:00:00", EndTime: "14:00:00", Days: "[6,7]" }],
    grouped = {},
    combined = [];

timingsArr.forEach(function (a) {
    var days = JSON.parse(a.Days).forEach(function (d) {
        grouped[daysMapping[d]] = grouped[daysMapping[d]] || [];
        grouped[daysMapping[d]].push(a.StartTime + ' ' + a.EndTime);
    });
});
days.forEach(function (day, i) {
    if (!i || JSON.stringify(this.last.data) !== JSON.stringify(grouped[day])) {
        this.last = { days: [day], data: grouped[day] };
        combined.push(this.last);
        return;
    }
    this.last.days[1] =day;
}, {});

combined.forEach(function (a) {
    var p;
    if (a.data) {
        a.data.sort();
        p = document.createElement('p');
        p.innerHTML = '<strong>' + a.days.join(' - ') + '</strong><br>' + a.data.join('<br>');
        document.body.appendChild(p);
    }
});

关于javascript - 获取按天分组的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328979/

相关文章:

php - 如何检查表单是否通过javascript提交?

android - 无法在android中使用比较器对数据进行排序

algorithm - 将行和列设置为零

javascript - 如何将二进制数据显示为图像 - extjs 4

javascript - node-rsa : Encoding too long, 使用以太坊账户的公钥

javascript - 滚动到 div 事件底部(溢出)

javascript - 提交 WordPress 之前检查输入的 radio ID

php - 从一个选项卡导航到另一个选项卡

algorithm - Hash表操作的时间复杂度是O(1)还是O(N)?

javascript - 如何在移动页面末尾自动显示 "load more"