そもそもJavaScriptは曜日をなぜか数字で管理しています。(Dateクラス)
全く現代的ではないため、JavaのEnum型DayOfWeekみたいな感じにできたらなと思って書いてみようと思いました。
JavaScriptでEnumを定義する - Qiita
調べてみると、上記記事のコメント欄でSymbolを使うのはどうか?と書かれていました。
Symbolとは文字列引数を用いて唯一な定数を生成するものです。ref: Symbol - JavaScript | MDN
そんな感じで書いてみました。
const DayOfWeek = {
SUNDAY: Symbol('日'), // 0
MONDAY: Symbol('月'), // 1
TUESDAY: Symbol('火'), // 2
WEDNESDAY: Symbol('水'), // 3
THURSDAY: Symbol('木'), // 4
FRIDAY: Symbol('金'), // 5
SATURDAY: Symbol('土'), // 6
};
const DayOfWeeks = {
values: [
DayOfWeek.SUNDAY,
DayOfWeek.MONDAY,
DayOfWeek.TUESDAY,
DayOfWeek.WEDNESDAY,
DayOfWeek.THURSDAY,
DayOfWeek.FRIDAY,
DayOfWeek.SATURDAY,
],
getDayOfWeek: index => {
return DayOfWeeks.values[index];
},
getDayOfWeekOfJapaneseChar: char => {
return DayOfWeeks.values.find(value => value.description == char);
},
getDayOfWeekOfJapaneseText: text => {
return DayOfWeeks.getIndexOfJapaneseChar(text[0]);
},
getIndexOf: dayOfWeek => {
return DayOfWeek.values.indexOf(dayOfWeek);
},
getDayOfWeekOfEnglish: text => {
return DayOfWeek[text];
},
};