создать массив массива с датой и неделей в angular

#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 Рад слышать, что это помогло 😉