我有一个时间范围,例如:14:30:00到18:30:00。考虑这个时间范围内某人的工作班次。在此时间范围内,他们声明从15:30:00到16:30:00以及从17:30:00到18:30:00无法工作。

var obj = {
startTime: 14:30,
endTime: 18:30
}

var deviation = [{s:15:30,e:16:30},{s:17:30,e:18:30}]


所以我需要像这样的输出

[{s:14:30 ,e:15:30}, {s:15:30,e:16:30}, {s:16:30,e:17:30}, {s:17:30,e:18:30}]

最佳答案

我根据需要创建了一个示例。我认为代码有些艰巨且冗长,因此如果对您有帮助,请使用否则忽略它。



    var obj = {
        s: '14:30',
        e: '18:30'
    }
    var deviation = [{
            s: '15:30',
            e: '16:30'
        },
        {
            s: '17:30',
            e: '18:30'
        }]

    $(document).ready(function () {
        deviation.push(obj);
        var newArr = [];
        $(deviation).each(function (index, value) {
            newArr.push(value.e);
            newArr.push(value.s);
        });
        var newArr = newArr.sort();
        var $timeArr = [];
        lastVal = '';
        $(newArr).each(function (index, value) {

            if (index == 0) {
                lastVal = value;
            } else {
                var stTime = lastVal;
                var endTime = value;

                lastVal = endTime;
                var pushObj = {
                    s: stTime,
                    e: endTime
                }
                var lsstKey = newArr.length - 1;
                if (index != lsstKey) {
                    $timeArr.push(pushObj);
                }
            }
        });
  			document.getElementById("myarray").innerHTML = JSON.stringify($timeArr);
    });

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="myarray"></p>





请检查以下链接

https://jsfiddle.net/vinay_kaklotar/vbt1uspe/3/

关于javascript - 用JavaScript中的其他时间范围将时间范围分成多个部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58924826/

10-13 01:36