console.log(["Good Morning", "Good Afternoon", "Good Evening"][~~(new Date().getHours() / 8)]);
Code Golf!
Как это работает:
Вам не нужно создавать новую датуОбъект и спрятать его в переменной, если вы только получаете часы.Таким образом, вы можете сделать: new Date().getHours()
.
Также оказывается, что вы можете поместить свои сообщения в Array и выбрать желаемое сообщение: var arr = ["Good Morning", "Good Afternoon", "Good Evening"]; console.log(arr[2]);
.Но вам не нужно хранить массив в переменной, чтобы получить сообщение.Вы можете сделать это: ["Good Morning", "Good Afternoon", "Good Evening"][2]
.Конечно, это выглядит немного странно, но оно говорит: «Эй, вот массив строк, возьмите меня с индексом 2».
Так как получить часы и превратить их в 0, 1 или 2 (наши индексы)?Ну, возьмите часы и разделите на 8. Это приблизит вас.Скажи, что 7:30 утра.Вы берете 7/8 и получаете 0,875.Это не показатель.Нам нужно округлить.Таким образом, мы можем сделать Math.floor(7/8)
и получить 0.
Мы можем передать TH (0
) в наш массив и получить Good Morning
.Здорово.Math.floor
слишком много символов для ввода, и я ленивый.Есть взлом Javascript с использованием побитовых операторов, объясненных здесь .В основном ~~
делает Math.floor
.Таким образом, мы можем обмануть и сделать ~~(new Date().getHours() / 8)
, чтобы превратить часы в 0
, 1
или 2
.
Возьмите этот результат, вытащите нашу строку из нашего массива и разбейте все это вconsole.log.