2017-10-17 5 views
2
そうのようないくつかのハードコーディングされた条件文に基づいて

私のジオロケーション、モバイルアプリの実行中に動的なデータセットからは動的に私は今、セットに時間を取得するためのフォームを作った... 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の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

日の数字を文字列に変換する配列をとり、にこの曜日の名前でアクセスし、1つのアイテムがスケジュールされた時刻にあるかどうかを確認できます。

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

+0

うわー、これは、おかげで素晴らしいです。私は '.some'について聞いたことはありませんでしたが、それは変わります! – user3442612

+1

['Array#some'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)は、配列のための存在量指定子であり、チェックのツールに非常に便利です条件付きの配列 –

+0

今日はこれを実装していて、いくつか変更しました。上記の例で誰かが問題を抱えていた場合は、 'sun'で' numberToDay'を開始し、 'hms> = t.start'のように最初の' hms'条件を切り替えてみてください。 – user3442612

関連する問題