javascript - TypeScript - 自定义类元素的 Array.map

标签 javascript arrays angular typescript class

我遇到了自定义类的数组元素的问题。

我的类定义为:

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);

在此指令之后,我的数组现在由对象元素填充,因此类中没有定义任何 Alarm 方法。

现在,我认为 map 函数不会修改原始数组,即使修改了,为什么我的 Alarm 对象变成了“简单”对象?

最佳答案

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);

关于javascript - TypeScript - 自定义类元素的 Array.map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51404846/

相关文章:

javascript - GAS - Apps 脚本检索上次创建的文件夹 ID

c++ - 使用文件初始化静态成员

arrays - 如何在 Swift 4 中访问全局数组?

arrays - 如何在tcl中实现二维数组

angular - Angular ,未捕获的语法错误:移至生产环境时输入意外结束

javascript - JS函数只允许输入字母和空格

javascript - Webpack 包未导出且无法导入

javascript - 卢比符号在显示时会转换为其他符号

angular - 在 AOT 编译之前 Lint Angular 2、4、5 模板 html 文件的最佳方法是什么

javascript - 我不能在我的数组中使用 .push 和 Angular 吗?无法读取未定义的属性 jsonArr