Результаты push массива js возвращают только длину итераций [момент js & угловой] - PullRequest
0 голосов
/ 30 января 2019

У меня есть функция, которая перебирает дни в месяце.Оттуда я показываю их в моем HTML с ngFor.Я хотел, чтобы цифра дня отображалась как текст, а название дня (понедельник, вторник, среда и т. Д.) - как класс для каждого дня.

monthDays = []; // global variable

  getDaysInMonth(month, year) {
    var date = new Date(year, month);
    var days = []; // 1,2,3
    var daysName = []; // mon, tue, wed
    while (date.getMonth() === month) {
      this.monthDays.push({
        days: days.push(moment(date).format("D")),
        daysName: daysName.push(moment(date).format("M"))
      })
      date.setDate(date.getDate() + 1);
    }
    console.log(this.monthDays);
  }

, так как мне нужны оба атрибута (days и daysName), я помещаю их в массив глобальных переменных monthDays, но в результате получаем только числа месяца

Array(31) // I.e Jan getDaysInMonth(1,2019)
0: {days: 1, daysName: 1} // should be days: 1 , daysName: 'Tue'
1: {days: 2, daysName: 2} // should be days: 2 , daysName: 'Wed'

, поэтому я могу использоватьобъект, как это в моем HTML

<p *ngFor="let x of monthDays" class="{{x.daysName}}" >{{ x.days }}</p>

Любая помощь или толчок в правильном направлении будет здорово.

1 Ответ

0 голосов
/ 30 января 2019

Поскольку push возвращает новую длину массива Push массива , days и daysName - это длина массива.Я думаю, что вы хотите получить массив объектов с 2 атрибутами день и имя.Попробуйте:

monthDays = []; // global variable

getDaysInMonth(month, year) {
    var date = new Date(year, month);
    var days = []; // 1,2,3
    var daysName = []; // mon, tue, wed
    while (date.getMonth() === month) {
        this.monthDays.push({
            days: moment(date).format("D"),
            daysName: moment(date).format("dddd")
        })
        date.setDate(date.getDate() + 1);
    }
    console.log(this.monthDays);
}
...