我正试图从数组中获取一个项:
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((方法返回数组中满足所提供测试函数的第一个元素的值。否则将返回未定义的。