Array.find仅在比较器中使用常数值时有效-Typescript

时间:2018-11-14 15:26:10

标签: javascript angular typescript find

我正在尝试从数组中获取一项:

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

控制台日志为this.deviceID写入“ 4”,并且为device值返回未定义。

Log fail

但是,如果我输入一个硬编码的值,它将起作用:

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

Log OK

为什么第一个功能不起作用?怎么了谢谢。

我的打字稿版本是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>

也许这可以帮助某人。

2 个答案:

答案 0 :(得分:0)

在任何情况下,item.device_id似乎都不等于4。

  

find()方法返回满足提供的测试功能的数组中第一个元素的值。否则返回undefined。

答案 1 :(得分:0)

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

尝试:

ssh $remote 'docker run -h "$(hostname)" \
                        -e "VARIABLE='"$SCRIPT_VAR"'" \
                        -e "HOST_HOSTNAME=$(hostname)" \
                        ...'