Определите следующий день из списка дней - PullRequest
0 голосов
/ 23 октября 2018

У меня есть функция, которая принимает 2 аргумента.Первый аргумент - это текущий день недели (число 1-7 для понедельника - воскресенья), а второй аргумент - это объект, который может иметь различное количество свойств и значений: например,

    example1 = {day1: 5, day2: 2, day3: 1, day4: 7};
    example2 = {day1: 2, day2: 4, day3: 5};
    example3 = {day1: 2, day2: 6};

Iхотите узнать следующий день (если текущий день найден, следующий день - текущий день) в объекте в зависимости от текущего дня недели.Например: в субботу (currentDay = 6) ожидаемый выходной файл example1 будет равен 7, выходной файл example2 будет равен 2, а выходной файл example3 будет равен 6. Объект также может быть пустым (тогда возвращаемое значение будет равно currentDay),Моя идея состояла в том, чтобы перебрать объект и вычислить день минус текущий день, чтобы наименьшее число было на следующий день.Если все числа отрицательны, у нас новая неделя.Я довольно новичок в JavaScript.Вот моя попытка, но я не могу заставить ее работать должным образом.

_determineNextDay = (currentDay, days) => {
    let negativeCheck = 0;
    let nextDay = currentDay;
    let countDays = 0;
    let calc = 0;
    for (let i in days) {
        countDays++;
        calc = days[i] - currentDay;
      if (calc < 0) {
        negativeCheck++;
      };
      if (calc >= 0 && calc < nextDay) {
        nextDay = calc + currentDay;
      };
    };
    calc = 0;
    if (negativeCheck == countDays && countDays > 0) {
      for (let i in days) {
        calc = days[i] - currentDay;
        if (calc < nextDay) {
          nextDay = calc;
        };
      };
      nextDay = nextDay + currentDay;
    };
    return nextDay;
  };

1 Ответ

0 голосов
/ 23 октября 2018

const find_closest_day = () => {
  const picked_days = Array
    .from( document.querySelectorAll( 'input:checked' ))
    .map( checkbox => checkbox.getAttribute( 'data-day' ))
  const current_day = new Date().getDay() || 7;
  const closest_day = picked_days.find( day => day >= current_day )
    || picked_days.sort().shift()
    || current_day;
  alert( closest_day );
};
document.querySelector( 'button' ).addEventListener( 'click', find_closest_day );
<ul>
  <li>
  <input type="checkbox" data-day="1">
  <span>Monday</span>
  </li>
  <li>
  <input type="checkbox" data-day="2">
  <span>Tuesday</span>
  </li>
  <li>
  <input type="checkbox" data-day="3">
  <span>Wednesday</span>
  </li>
  <li>
  <input type="checkbox" data-day="4">
  <span>Thursday</span>
  </li>
  <li>
  <input type="checkbox" data-day="5">
  <span>Friday</span>
  </li>
  <li>
  <input type="checkbox" data-day="6">
  <span>Saturday</span>
  </li>
  <li>
  <input type="checkbox" data-day="7">
  <span>Sunday</span>
  </li>
</ul>
<button>Closest</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...