作者:sunhuan | 来源:互联网 | 2022-12-10 12:19
我在自定义类的数组元素上遇到问题。
我的课程定义为:
export class Alarm {
id: string;
name: string;
time: string;
days: string[];
//My custom methods....
constructor (values: Object = {}){
Object.assign(this, values);
}
}
在我的(Angular)组件中,我定义了一个Alarm对象数组
var alarms: Alarm[] = [
new Alarm({ name: "Alarm 1", time: "06:55", days: ["MO", "TU"] }),
new Alarm({ name: "Alarm 2", time: "06:56", days: ["MO", "TU"] }),
new Alarm({ name: "Alarm 3", time: "06:57", days: ["MO", "TU"] }),
new Alarm({ name: "WAKE UP!", time: "06:58", days: ["MO", "TU"] })
];
而且,如果我检查数组,我可以看到所有元素都是Alarm对象。
但是,如果我尝试从ID开始使用以下内容获取警报索引:
var alarmPosition = this.alarms.map((alarm) => alarm.id == id).indexOf(true);
在执行此指令之后,我的数组现在由Object元素填充,因此没有在类中定义任何Alarm方法。
现在,我认为map函数不会修改原始数组,即使这样做了,为什么我的Alarm对象变成“简单”对象?
1> Wand Maker..:
map
将导致新的数组。根据您要查找的内容尝试使用find
/ filter
。
// Finds an alarm with given ID
var alarm = this.alarms.find((alarm) => alarm.id === id);
// Finds all alarms with given ID
var alarms = this.alarms.filter((alarm) => alarm.id === id);