JSONファイルを日付範囲や時間範囲で絞り込み、抽出したいです。
JSONファイルのデータは以下のようになっています。
json
1[ 2 { 3 "id": 1, 4 "name": "あ", 5 "quote": "テストA", 6 "category": "情報", 7 "place_now": "家", 8 "time_extent": "23:00", 9 "date_extent": 0 10 }, 11 { 12 "id": 2, 13 "name": "い", 14 "quote": "テストB", 15 "category": "情報", 16 "place_now": "家", 17 "time_extent": "23:00~6:00", 18 "date_extent": 0 19 }, 20 { 21 "id": 3, 22 "name": "う", 23 "quote": "テストC", 24 "category": "情報", 25 "place_now": "家", 26 "time_extent": "7:00", 27 "date_extent": 0 28 }, 29 { 30 "id": 4, 31 "name": "え", 32 "quote": "テストD", 33 "category": "情報", 34 "place_now": "家", 35 "time_extent": 0, 36 "date_extent": 0 37 }, 38 { 39 "id": 5, 40 "name": "お", 41 "quote": "明けましておめでとう", 42 "category": "情報", 43 "place_now": "家", 44 "time_extent": 0, 45 "date_extent": "1/1" 46 }, 47 { 48 "id": 6, 49 "name": "か", 50 "quote": "バレンタインだ", 51 "category": "情報", 52 "place_now": "家", 53 "time_extent": 0, 54 "date_extent": "2/14" 55 }, 56 { 57 "id": 7, 58 "name": "き", 59 "quote": "クリスマスイブだ", 60 "category": "情報", 61 "place_now": "家", 62 "time_extent": 0, 63 "date_extent": "12/24" 64 }, 65 { 66 "id": 8, 67 "name": "く", 68 "quote": "クリスマスだ", 69 "category": "情報", 70 "place_now": "家", 71 "time_extent": 0, 72 "date_extent": "12/25" 73 }, 74 { 75 "id": 9, 76 "name": "け", 77 "quote": "眠い", 78 "category": "情報", 79 "place_now": "家", 80 "time_extent": "7:00~9:00", 81 "date_extent": 0 82 }, 83 { 84 "id": 10, 85 "name": "こ", 86 "quote": "", 87 "category": "情報", 88 "place_now": "家", 89 "time_extent": "12:00", 90 "date_extent": 0 91 } 92]
time_extent⇒時間
date_extent⇒日付
例えば、クリスマスの情報を知りたい場合は
date_extentで「12/25」で絞り込むような形です。
日付や時間にこだわらない情報の場合は「0」が入力されています。
現在の時刻が8:00だったとして、
time_extent:7:00~9:00 の項目…
範囲内の情報を取得するにはどのように組んだらいいのでしょうか。
データの表記にはとくにこだわっていないので
7:00~9:00と記載されているデータを >=7:00 && <=9:00 みたいに記載しても
問題ありません。
情報収集しつつ質問してました。
一応問題なく動作しそうなところまで確認できました。
js
1const array = [ 2 { 3 "id": 1, 4 "name": "あ", 5 "quote": "テストA", 6 "category": "情報", 7 "place_now": "家", 8 "time_extent": "23:00", 9 "date_extent": 0 10 }, 11 { 12 "id": 2, 13 "name": "い", 14 "quote": "テストB", 15 "category": "情報", 16 "place_now": "家", 17 "time_extent": "23:00~6:00", 18 "date_extent": 0 19 }, 20 { 21 "id": 3, 22 "name": "う", 23 "quote": "テストC", 24 "category": "情報", 25 "place_now": "家", 26 "time_extent": "7:00", 27 "date_extent": 0 28 }, 29 { 30 "id": 4, 31 "name": "え", 32 "quote": "テストD", 33 "category": "情報", 34 "place_now": "家", 35 "time_extent": 0, 36 "date_extent": 0 37 }, 38 { 39 "id": 5, 40 "name": "お", 41 "quote": "明けましておめでとう", 42 "category": "情報", 43 "place_now": "家", 44 "time_extent": 0, 45 "date_extent": "1/1" 46 }, 47 { 48 "id": 6, 49 "name": "か", 50 "quote": "バレンタインだ", 51 "category": "情報", 52 "place_now": "家", 53 "time_extent": 0, 54 "date_extent": "2/14" 55 }, 56 { 57 "id": 7, 58 "name": "き", 59 "quote": "クリスマスイブだ", 60 "category": "情報", 61 "place_now": "家", 62 "time_extent": 0, 63 "date_extent": "12/24" 64 }, 65 { 66 "id": 8, 67 "name": "く", 68 "quote": "クリスマスだ", 69 "category": "情報", 70 "place_now": "家", 71 "time_extent": 0, 72 "date_extent": "12/25" 73 }, 74 { 75 "id": 9, 76 "name": "け", 77 "quote": "眠い", 78 "category": "情報", 79 "place_now": "家", 80 "time_extent": "6:00<=7:00", 81 "date_extent": 0 82 }, 83 { 84 "id": 10, 85 "name": "こ", 86 "quote": "", 87 "category": "情報", 88 "place_now": "家", 89 "time_extent": "13:00", 90 "date_extent": 0 91 } 92] 93const test= array.filter(x => x.time_extent === '7:30') 94console.log(test) 95
ただ、「7:00~9:00」のものや
「23:00~6:00」をどうやって取得すれば良いか分かりません。
時間 範囲 取得 等で調べても、現在時刻で比較したりしてます。
今はダミーのデータなので「12:00」などきりの良い数字が多いですが
基本的には「11:30~12:30」など時刻範囲になる予定です。
元データ自体を「7:00<=9:00」のようにしても良いのかと思いましたが、
取得は出来ませんでした。
比較しやすくするために、時刻を数値で表すのも良いかと思ってます。
12時30分⇒12.5
0時30分⇒0.5
15時45分⇒15.75
https://www.tagindex.com/javascript/message/time2.html
上記サイトが参考になりそうでしたが、
データ側を時間範囲にしたいので少々違うと思っています。
データ自体に、7:00以上9:00以下などの範囲に設定できれば
私の実施したい事ができるのですが…。
JSでJSONを動的にフィルタしたい
https://teratail.com/questions/212715
上記が参考になりそうなので確認中です。
jsonのファイル自体に「開始時間」「終了時間」と指定しても良いかもしれません。
回答2件
あなたの回答
tips
プレビュー