制作背景
現在JavaScriptの表を用いてカレンダーを製作しています。
ひと月表示で、日にちの枠の中に日付だけでなく、祝日や六曜を入れようとしています。
そこで表示させたいデータはcsvで作成し、日付ごとにjsで呼び出したいです。
行き詰まった点
下記コードにおいて、カレンダー表示させる年月日を取得(sdate)し、
naikakudata内をindexOfで検索、一致したらその日の祝日名(naikakudata[baa][1])を返し、一致するものがないときは0を返します。
sdateは2020/1/1と取得できているのですが、(1)の部分が常に-1となってしまい、naikakudaraが取り出せていません。正しく照合させるためにはどうしたらよいでしょうか?
アドバイスお願いいたします。
JavaScript
1function shukujitu(syear, smonth, sday){ 2 3var sdate = syear + "/" + smonth + "/" + sday; 4var naikakudata = csvToArray("../../events/newshukujitu.csv"); 5let EndofSyukujitu = naikakudata.length 6 7 for(let i = 1; i < EndofSyukujitu; i++) { 8var baa = naikakudata.indexOf(sdate); 9 console.log(baa); //(1) 10 var syukujitu = naikakudata[i][0]; 11 if(baa != -1){ 12 return naikakudata[baa][1]; 13 }else { 14 return 0; 15 } 16 } 17}
使用データ
内閣府から配布されている祝日データのCSVファイルを使用しています。(一部抜粋)
CSV
12020/1/1,元日 22020/1/13,成人の日 32020/2/11,建国記念の日 42020/2/23,天皇誕生日 52020/2/24,休日 62020/3/20,春分の日 72020/4/29,昭和の日 82020/5/3,憲法記念日 92020/5/4,みどりの日 102020/5/5,こどもの日 112020/5/6,休日 122020/7/23,海の日 132020/7/24,スポーツの日 142020/8/10,山の日 152020/9/21,敬老の日 162020/9/22,秋分の日 172020/11/3,文化の日 182020/11/23,勤労感謝の日 19
補足
頂きました質問にできるだけ補足します。
不明点等は随時コメントください!
**csvToARRAY **
こちらは他のコードで使えています。また、consoleでnaikakudataに二次元配列のように取得できています。
JavaScript
1 function csvToArray(path) { 2 "use strict"; 3 var csvData =new Array(); 4 var data = new XMLHttpRequest(); 5 data.open("GET", path, false); 6 data.send(null); 7 var LF = String.fromCharCode(10); 8 var lines = data.responseText.split(LF); 9 for (var i = 0; i < lines.length; ++i) { 10 var cells = lines[i].split(","); 11 if (cells.length !== 1) { 12 csvData.push(cells); 13 } 14 } 15 return csvData; 16 }
引数のステートメント
yearとmonthはグローバル変数として宣言されています。こちらも、使用したい内容になっていることは確認済みです。
sdayに入るdayCountも取得できています。
JavaScript
1let year = parseInt(monthlyData[0], 10); 2let month = parseInt(monthlyData[1], 10); 3 4//////////////別の関数内にて 5 let dayCount = 1; // 日にちのカウント 6 var sss = shukujitu(year, month, dayCount);
取得している日付データがletで、検索対象が文字列(string?)という問題もあるのでしょうか…?
回答2件
あなたの回答
tips
プレビュー