Array.find只适用于comparator-Typescript中的常数值



我正试图从数组中获取一个项:

const device = this.selectedDevtype.devices.find(item =>
    console.log(this.deviceID);
    return item.device_id === this.deviceID;
});
console.log(device);

控制台日志为this.deviceID写入"4",并为device值返回undefined。

记录失败

但如果我把一个硬编码的值,它是有效的:

const device = this.selectedDevtype.devices.find(item =>
    console.log(this.deviceID);
    return item.device_id === 4;
});
console.log(device);

记录正常

为什么第一个函数不起作用?错误是什么?谢谢

我的打字脚本版本是2.6.2,我正在开发Angular 5。


实际上,我在比较字符串和数字。很遗憾,我在组件类中声明了类型:

deviceID: number;

角材料辐射组正在将变量类型更改为字符串:

<mat-radio-group [(ngModel)]="deviceID" (change)="updateDevice()">
  <mat-radio-button fxFlex="50"
    *ngFor="let device of selectedDevtype.devices" value="{{ device.device_id }}">
    [{{ device.key }}]{{ device.name }}
  </mat-radio-button>
</mat-radio-group>

也许这能帮助到别人。

您确定没有将字符串与整数进行比较吗?

尝试:

const device = this.selectedDevtype.devices.find(item => +item.device_id === +this.deviceID)

似乎item.device_id在任何一次出现中都不等于4。

find((方法返回数组中满足所提供测试函数的第一个元素的值。否则将返回未定义的。

最新更新