从JavaScript中的动态数据集动态创建条件

时间:2017-10-17 09:33:47

标签: javascript

我的地理位置移动应用程序基于一些类似硬编码的条件运行...

function checkTime(hms){
        // for example a day (day 0 == Sun) between 06:00 and 23:45
        if( (today === 1 || today === 2 || today === 3 || today === 4) && hms > "09:00:00" && hms < "15:40:00") {
                ajax_post(position.coords.latitude, position.coords.longitude, position.coords.accuracy, position.coords.speed, position.timestamp);
        }
        else if( today === 5 && hms > "13:00:00" && hms < "13:40:00") {
                ajax_post(position.coords.latitude, position.coords.longitude, position.coords.accuracy, position.coords.speed, position.timestamp);
        }
        else {
                document.getElementById("status").innerHTML = "Data not scheduled to be posted to the server yet";
        }
}

我现在已经制作了一张表格来获取时间。时间存储在html5&#39; localStorage中的对象中,如此......

var timeDb = {
    mon:[],
    tue:[{start:"21:00",end:"23:00"},{start:"23:00",end:"22:30"}],
    wed:[],
    thu:[],
    fri:[],
    sat:[{start:"11:00",end:"22:15"}],
    sun:[]
}

我的问题是,由于以上是动态的,如何在用户更新timeDb时动态创建上述条件?我只使用JavaScript。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用数组进行日期字符串转换,并使用此日期名称访问timeDB,并检查一个项目是否在预定时间内。

&#13;
&#13;
function checkTime(today, hms) {
    var numberToDay = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
    if (timeDb[numberToDay[today]].some(t => t.start >= hms && hms <= t.end)) {
        //ajax_post
        return true;
    } else {
        // document.getElementById("status").innerHTML = "Data not scheduled to be posted to the server yet";
        return false;
    }
}

var timeDb = { mon: [], tue: [{ start: "21:00", end: "23:00" }, { start: "23:00", end: "22:30" }], wed: [], thu: [], fri: [], sat: [{ start: "11:00", end: "22:15" }], sun: [] };

console.log(checkTime(0, '00:00')); // false
console.log(checkTime(1, '22:00')); // true
&#13;
&#13;
&#13;