angular - find() 不返回数据,只返回未定义
问题描述
我想从这个 JSON 中找到() s_id:
{
"StatusCode": 0,
"StatusMessage": "OK",
"StatusDescription": [
{
"s_id": "11E8C70C8A5D78888E6EFA163EBBBC1D",
"s_serial": "PkMGo",
"active": 0,
},
{
"s_id": "11E8C70FB9D10DB38E6EFA163EBBBC1D",
"s_serial": "UgooX",
"active": 0,
},
{
"s_id": "11E8C7179F85836D8E6EFA163EBBBC1D",
"s_serial": "IiLnM",
"active": 0,
}, .....
{
"s_id": "11E8C71905123F1A8E6EFA163EBBBC1D",
"s_serial": "LVpcP",
"active": 0,
}
}]}
我尝试在其中找到但返回未定义。
sensors: Sensors[]=[];
hbp: HBP;
sensor: Sensors;
this.ss.getAllS().subscribe(
sensors => {
this.sensors = sensors
let ss = this.sensors.find(x => x.s_id === this.hbp.s_id);
console.log(ss)
if (ss) {
this.selectedSensor = ss.s_id
}
}
);
和
selectedSensor : string = this.sensors.filter(
x => x.s_id === this.sensor.s_id[0])
.map(y => y.s_serial).join('');
我认为我在这一行有问题:
let ss = this.sensors.find(x => x.s_id === this.hbp.s_id);
因为,hbp 返回这个 json:
active: 0
homebox_id: "11E8C71154CC8C188E6EFA163EBBBC1D"
sensors: Array(2)
0: {s_serial: "s_id", s_id: "11E8C70C8A5D78888E6EFA163EBBBC1D"}
1: {s_serial: "UgooX", s_id: "11E8C70FB9D10DB38E6EFA163EBBBC1D"}
在这条线上可能会在这个传感器里面找到
这 selectedSensor
是我在 html 代码中使用的
<input formControlName="s_id" type="text" placeholder="Select " [(ngModel)]="selectedSensor" aria-label="Number" matInput
[matAutocomplete]="auto">
如何返回数据?
你能问我任何想法吗?
解决方案
您的代码对我来说似乎很好,您确定该this.ss.getAllS()
方法返回一个 StatusDescription 类型的数组吗?我建议sensors
在运行时调试变量中的实际内容。
推荐阅读
- javascript - JavaScript 是否允许为 Objects 字段设置键?
- mysql - 查询将mysql 12小时时间更改为24小时时间
- android - CallLog.Calls 中 TYPE 字段中的意外值
- c++ - 选择特定版本的 Visual Studio 命令行工具包并针对特定版本的 C++ 运行时环境编译文件
- regex - 提取 filname 并将名称存储在 csv 文件的新列中
- python - VS Code:python.exe 仅在从 Anaconda Navigator 打开时才能在终端中工作
- excel - 读取动态用户窗体复选框并填充数组
- asp.net - 400 对 ASP .NET Web API 文件流字符的错误请求
- vba - 允许在受保护的工作簿中分组/取消分组的 VBA 代码
- excel - 如何复制而不丢失信息?