Я пытаюсь найти более простое решение проблемы.
Проблема:
Я хочу попытаться упростить это, но понятия не имею, с чего начать.
let days = Math.floor(distance / (1000 * 60 * 60 * 24));
if(days > 0) {
days = days + "d";
}
Попытка:
Я думал, что мог бы использовать троичные операторы, чтобы вернуть вычисление + "d" примерно так:
let days = Math.floor(distance / (1000 * 60 * 60 * 24)) === 0 ? Math.floor(distance / (1000 * 60 * 60 * 24)) + "d" : "";
это, однако, очень грязно, на мой взгляд иЯ не могу найти другой способ.
Текущая структура
В настоящее время я рассчитываю дни, часы, минуты и секунды для такого таймера:
let distance = expiry - now;
let days = Math.floor(distance / (1000 * 60 * 60 * 24));
let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
let seconds = Math.floor((distance % (1000 * 60)) / 1000);
Послечто я хочу показывать только дни, если это greater than 0
или минуты, если это greater than 0
и так далее.В настоящее время я делаю это с кучей операторов if и логическим значением, чтобы проверить, было ли уже найдено значение больше 0.Вот так:
let isSet = false;
if (days > 0 && !isSet) {
current = days + "d";
isSet = true;
}
if (hours > 0 && !isSet) {
current = hours + "h";
isSet = true;
}
if (minutes > 0 && !isSet) {
current = minutes + "m";
isSet = true;
}
if (seconds > 0 && !isSet) {
current = seconds + "s";
isSet = true;
}
if (seconds < 0 && !isSet) {
current = "expired";
isSet = true;
}
Это, однако, кажется очень повторяющимся и неправильным (даже если это работает).