Есть ли правильный способ захватить название дня, когда у вас короткая версия, например:
mon
tue
wed
thu
fri
sat
sun
Мне не нужна фактическая "дата" или время или что-то еще, мне просто нужна строка для имени полной даты.
Достаточно простого словаря ассоциативного массива (read object):
var days = {
'mon': 'Monday',
'tue': 'Tuesday',
'wed': 'Wednesday',
'thu': 'Thursday',
'fri': 'Friday',
'sat': 'Saturday',
'sun': 'Sunday'
}
Теперь вы можете получить к ним доступ следующим образом:
var day = 'mon',
full = days[day]; // full === 'Monday';
switch(dayNameShort): { case X: return Y }, case ...
, чтобы вы могли обрабатывать ложные значения и писать для нее тесты? Я думаю, что правильное наименование должно быть частью хорошего ответа тоже. Почему бы не назвать вашего партнера. массив shortDayNameToLong
или что-то подобное? Или даже так - у вас может быть родительский объект DayNameConverter
а объект текущих days
именем shortToLong
использовать его как DayNameConverter.shortToLong[myShortDayName]
? Просто возиться с вариантами здесь.
небольшое улучшение ответа @BenM
var Days = {
'mon': 'Monday',
'tue': 'Tuesday',
'wed': 'Wednesday',
'thu': 'Thursday',
'fri': 'Friday',
'sat': 'Saturday',
'sun': 'Sunday',
getFullName: function(day) {
return this[day];
}
}
Days.getFullName("mon");
В JS с ES6 фактически объект Map является правильным способом выполнения этого задания, поскольку он более эффективен, чем доступ к объекту. Очень упрощенная реализация заключается в следующем:
var days = new Map([["mon", 'Monday'],
["tue", "Tuesday"],
["wed", "Wednesday"],
["thu", "Thursday"],
["fri", "Friiday"],
["sat", "Saturday"],
["sun", "Sunday"]
]);
console.log(days.get("thu"));
Map
существует в первую очередь для поддержки варианта использования, где в качестве ключей используются не-строки
@BenM уже добавил ответ. Просто расширяя свой ответ,
var days = {
'mon': 'Monday',
'tue': 'Tuesday',
'wed': 'Wednesday',
'thu': 'Thursday',
'fri': 'Friday',
'sat': 'Saturday',
'sun': 'Sunday'
}
var shortDays = ['mon','tue','wed','thu','fri','sat','sun'];
var getFulldays = shortDays.map(function(day){
return days[day]
})
console.log(getFulldays)
days={mon:"Monday", etc...}
, Затемdays["mon"]
дает"Monday"
.