Js получение все дни текущей недели

мне нужна помощь в понимании JS

Пример

Можно использовать только нативный JS. Нужно получить все числа текущей недели а так же к какому дню неделю он принадлежит. Как на картинке впрочем. Примерный формат получаемых данных:

Пример 1
  

  const array = [
    {
      day: 'Пн',
      date: 28,
    },
    {
      day: 'Вт',
      date: 1,
    },
    {
      day: 'Ср',
      date: 2,
    },
    {
      day: 'Чт',
      date: 3,
    },
    ]....

    Пример текущей недели. 
    const array = [
    {
      day: 'Пн',
      date: 7,
    },
    {
      day: 'Вт',
      date: 8,
    },
    {
      day: 'Ср',
      date: 9,
    },
    {
      day: 'Чт',
      date: 10,
    },
    ].... и так до воскресенья

Так же должны учитываться и следующие дни с нового месяца т.е. в примере 1 это показано что значение для ПН = 28 взятое с прошлого месяца


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

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

Используйте класс Date, его методы getDate(), getDay(). Создайте экземпляр:

let date = new Date();

Создайте класс дня:

class Day(){
    day;
    date;
    constructor(day, date){
        this.day = day;
        this.date = date;
    }
}

Создайте массив экземпляров Day:

let week = new Array();
week.lenght = 7;

Заполните его:

for(let i = 0; i < 7; i++){
    week[i] = new Day(date.getDay(), date.getDate());
    date.setDate(date.getDate() + i);
}

Готово! Можете записывать в JSON. Но стоит знать, что дни измеряются в цифрах, поэтому получить желаемое можно так:

const dayArray = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']; 
const day = dayArray[week[0].day];
const date = week[0].date;

Весь код:

class Day(){
    day;
    date;
    constructor(day, date){
        this.day = day;
        this.date = date;
    }
}
const dayArray = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
let date = new Date();
let week = new Array();
week.lenght = 7;
for(let i = 0; i < 7; i++){
    week[i] = new Day(date.getDay(), date.getDate());
    date.setDate(date.getDate() + i);
}
//Дальше преобразование в JSON
→ Ссылка
Автор решения: Евгений Колмак
const date = new Date();
// Дата
const weekDay = date.getDay();
// День недели
const monthDay = date.getDate();
// День месяца
const month = date.getMonth();
// Номер месяца (индекс)

const getWeek = () => {
  const countDayOnMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  // Кол-во дней в каждом месяце
  const week = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Cб', 'Вс'];
  let result = [];
  // День месяца, понедельника текущей недели
  let countMonthDay;
  // Проверка что бы всегда начинать выстаривать текущую неделю с понедельника
  if (weekDay > 1) {
    countMonthDay = monthDay - (weekDay - 1);
  } else if (weekDay === 0) {
    countMonthDay = monthDay - 6;
  } else {
    countMonthDay = monthDay;
  }
  // Постраение итогового массива 
  for (let i = 0; i < week.length; i++) {
    // Если countMonthDay больше кол-ва дней в месяце
    // дни начинаются сначала
    if ((countMonthDay + i) > countDayOnMonth[month]) {
      let count = countDayOnMonth[month] - (countMonthDay + (week.length - 1));
      result.push([`day: ${week[i]}`, `date: ${count + i}`]);

    } else {
      result.push([`day: ${week[i]}`, `date: ${countMonthDay + i}`]);
    }

  }

  return result

}
getWeek();
→ Ссылка