#angular #ionic-framework
#angular #ionic-framework
Вопрос:
Я пытаюсь создать массив массива с датой перегруппировки на 7 семь для каждой недели. Что-то вроде
full_dates = [
[{date: 'Mon 12', date: 'Tue 13, date: 'Wed 14'}],
[{date: 'Mon 19', date: 'Tue 20, date: 'Wed 21'}],
and so on
];
итак, что я сделал, чтобы начать его, создайте массив всех нужных мне дат, указав начало и конец.
Затем я хотел бы ввести это значение в цикл, и каждый раз, когда в цикле i%7 равно 0, я меняю week и пытаюсь сохранить его в другом массиве в моем «большом массиве».
итак, я сделал что-то подобное.
// initialize full_calendar
full_calendar: any[] = [[]];
...
// create an array of date between an initial date and a final date
let initialTime = new Date("2020-10-12Z08:00:00");
let endTime = new Date("2020-10-27Z08:00:00");
for (let q = initialTime; q <= endTime; q.setDate(q.getDate() 1)) {
this.dates.push(q.toString());
}
console.log(this.dates);
// make a loop for each date, and regroup them by 7 for a week
let week = -1;
for (let i = 0; i<14;i ) {
if (i%7 == 0) {
week = 1;
}
this.full_calendar[week].push({date:this.dates[i]});
}
console.log(this.full_calendar);
Но я получил ошибку: TypeError: не удается прочитать свойство ‘push’ неопределенного
Ошибка типа: не удается прочитать свойство ‘push’ неопределенного
Похоже, я не могу создать новый массив внутри массива. Может быть, мне следует сделать другую инициализацию?
Спасибо
Ответ №1:
Вам нужны небольшие изменения в вашем коде
full_calendar: any[][] = [];
...
let week = 0; // Week needs to start from 0
for (let i = 0; i < 14; i ) { // Instead of 14, it might be difference between start and end date
if (i % 7 == 0 amp;amp; i !== 0) {
week = 1;
}
// As you initialized `full_calendar` as an empty array, you need to do undefined check
if (this.full_calendar[week]) {
this.full_calendar[week].push({
date: this.dates[i]
});
} else {
this.full_calendar[week] = [{
date: this.dates[i]
}];
}
}
Комментарии:
1. @Yann92 Рад слышать, что это помогло 😉