Вы можете найти начало недели, используя .startOf('week')
.
var currentWeek = getWeekRange(0);
var lastWeek = getWeekRange(-1);
var weekBeforeLast = getWeekRange(-2);
var currentWeek2 = getWeekRange2(0);
console.log(currentWeek, lastWeek, weekBeforeLast, currentWeek2);
function getWeekRange(week = 0) {
var weekStart = moment().add(week, 'weeks').startOf('week');
return [...Array(7)].map((_, i) =>
weekStart.clone().add(i, 'day').format('DD/MM/YYYY')
);
}
function getWeekRange2(week = 0) {
var weekStart = moment().add(week, 'weeks').startOf('week');
var days = [];
for (var i = 0; i < 7; i++) {
days.push(weekStart.clone().add(i, 'day').format('DD/MM/YYYY'));
}
return days;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script>
Для уточнения:
[...Array(7)]
был использован для краткости. Он создает Array
с 7 undefined
предметами, т.е. [undefined, undefined, ...]
. Эти элементы считаются заполнителями и будут отображаться в дни недели с помощью .map()
.
Несмотря на то что undefined
, я использую элемент index
в массиве для увеличения дня недели - другими словами, первый элемент массива, [undefined]
, будет иметь index
0
, поэтому мы добавили бы 0
дней и добавили бы до конца недели.
Вы также можете сделать что-то вроде:
function getWeekRange(week = 0) {
var weekStart = moment().add(week, 'weeks').startOf('week');
var days = [];
for (var i = 0; i < 7; i++) {
days.push(weekStart.clone().add(i, 'day').format('DD/MM/YYYY'));
}
return days;
}