尝试推入数组时未定义数组

Array is undefined when trying to push into it

我正在尝试将模型中的一些值推入数组。

public model: WeekDays[];

WeekDays 是这种类型的枚举

export enum WeekDays {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
}

所以我有一个保存功能,它应该执行以下操作:

public save(){
        this.model.forEach(function (value){
            this.arr.push(WeekDays[value]);
        })
    }

我想获取模型的每个元素并添加天数。 例如,如果我在模型中有星期一和星期二,当执行

console.log(WeekDays[value])

输出是

0
1

我想将这些值添加到数组中,但出现“无法读取未定义的属性(读取 'arr')”错误。

数组定义为

arr = Array(7);

我做错了什么?

您需要使用 => 来声明您的 forEach 回调。

=> 声明的函数从它们创建的范围中捕获 this 的值。function 没有。所以 this 并不是你想的那样。它很可能是全局对象,而不是您的 class 实例。

试试这个:

this.model.forEach((value) => {
  this.arr.push(WeekDays[value]);
})