Найти промежуточные значение между названиями дней недели

Подскажите, пожалуйста, как найти значения недели между сокращениями дней недели:

Что-бы для SUN-WED получить SUN,MON,TUE,WED
или для MON-FRI получить MON,TUE,WED,FRI.

UPD: мой вариант

function getWeekDays(start, end) {
  let newarr = [];
  let week = ['SUN', 'MON', 'TUE', 'WED', 'THUR', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THUR', 'FRI', 'SAT'];
  let a = week.indexOf(start);

    for (let i = 0; i < week.length; i++) {
      if (i >= a) {
        newarr.push(week[i])
        if (week[i] === end) {
          break;
        }
      }
    }
}

getWeekDays('SAT', 'MON');

Ответы (1 шт):

Автор решения: Denis640Kb

У Вас во втором варианте пропущен четверг.

Марина, так как Вы уже не первый раз пользуетесь помощью сообщества stackoverflow, Вы должны понимать, что это не портал выполнения задач по требованию.
Просто так за Вас никто не станет выполнять задачи, Вы же понимаете, что тут оказывают помощь, а не делают за Вас.

Постарайтесь в будущем обязательно прикладывать свои попытки выполнения задачи, тогда и минусов не будет, и гораздо больше будет вероятность, что Вам дадут быстрый и правильный ответ.

Добавил комментарии, чтобы было понимание, как всё это работает.

let days = ['MON','TUE','WED','THU','FRI','SAT','SUN'];

let range = 'SUN-WED';
let range1 = 'MON-FRI';

function getRange(val) { // Объявляем функцию, которая принимает строку.
    let days1 = val.split('-'); // Разбиваем строку по -
    let dayFrom = days.indexOf(days1[0]); // Получаем индекс первого элемента в общем массиве дней
    let dayTo = days.indexOf(days1[1]); // Получаем индекс второго элемента в общем массиве дней
    let result = ''; // Сюда будем записывать результат

    if (dayTo<dayFrom){ // Если индекс второго параметра меньше первого, тогда...
        for(let i=dayFrom;i<days.length;i++){ // Делаем перебор с индекса первого параметра до конца массива дней(Чтобы попали все дни, даже, если они, например с пятницы по вторник)
            if(result){ // Если есть запись в строке результата то...
                result += '-'+days[i]; // ставим тире перед следующим параметром и добавляем его
            } else { // Если записи нет, то...
                result += days[i]; // Просто добавляем параметр
            }
        }
        for(let i1=0;i1<=dayTo;i1++){ // После того, как мы записали все дни с начала до воскреснья, нам необходимо записать остальные дни с понедельника до указанного параметра. Перебираем массив дней от 0 до индекса второго параметра
            if(result) { // Если есть запись в строке результата то...
                result += '-'+days[i1]; // ставим тире перед следующим параметром и добавляем его
            } else { // Если записи нет, то...
                result += days[i1];// Просто добавляем параметр
            }
        }
    } else { // Если же индекс второго параметра больше первого индекса, то...
        for(let i2=dayFrom;i2<=dayTo;i2++){ // Перебираем массив с индекса начала до индекса конца включительно
            if(result) { // Если есть запись в строке результата то...
                result += '-'+days[i2]; // ставим тире перед следующим параметром и добавляем его
            } else { // Если записи нет, то...
                result += days[i2]; // Просто добавляем параметр
            }
        }
    }
    return result; // Возвращаем из функции строку результата
}
console.log(getRange(range)); // Запускаем функцию и выводим результат в консоль.
console.log(getRange(range1)); // Запускаем функцию и выводим результат в консоль.

Или, если без объяснений и сократить код:

    let days = ['MON','TUE','WED','THU','FRI','SAT','SUN'];
    let range = 'SUN-WED';
    function getRange(val) {
        let days1 = val.split('-');
        if (days.indexOf(days1[1])<days.indexOf(days1[0])){
            return days.slice(days.indexOf(days1[0]), days.length).join('-')+'-'+days.slice(0, days.indexOf(days1[1])+1).join('-');
        } else {
            return days.slice(days.indexOf(days1[0]), days.indexOf(days1[1])+1).join('-');
        }
    }
    console.log(getRange(range));

→ Ссылка