我正在使用 Angular 2。
首先,我对 API 进行查询并以 JSON 格式检索信息。
使用这种方法:
getinvfechasensores(fecha1,fecha2){
return this._http.get(this.url+'getinvfechasensores/' +fecha1 + '/' + fecha2)
.map(res => res.json());
}
然后我用我的组件订阅这个方法
mostrarnombre(){
this._invService.getinvfechasensores(this.fecha1,this.fecha2).subscribe(
response => {
if (!response) {
console.log('error al cargar datos');
} else {
this.invernadero = response;
console.log(this.invernadero);
var f0=this.invernadero.map(item => item.recvTime);
}
温室变量是我的对象,我所做的是将 JSON 响应分配给该对象:
export class Invernadero{
constructor(
public recvTimeTs: string,
public recvTime: string,
public fiwareServicePath: string,
public entityId: string,
public entityType: string,
public attrName: string,
public attrType: string,
public attrValue: string,
public attrMd: string,
public invjuancol: number
){}
}
我的 JSON 的结构是这样的:
[
{
"attrMd": null,
"attrName": "sensor1",
"attrType": "Integer",
"attrValue": "22",
"entityId": "palmerillas",
"entityType": "invernadero",
"fiwareServicePath": "ualiof",
"invjuancol": 141,
"recvTime": "2017-09-28T18:09:31.000Z",
"recvTimeTs": null
},
{
"attrMd": null,
"attrName": "sensor2",
"attrType": "Integer",
"attrValue": "26",
"entityId": "palmerillas",
"entityType": "invernadero",
"fiwareServicePath": "ualiof",
"invjuancol": 142,
"recvTime": "2017-09-28T18:09:39.000Z",
"recvTimeTs": null
},
{
"attrMd": null,
"attrName": "humedad",
"attrType": "Integer",
"attrValue": "53",
"entityId": "palmerillas",
"entityType": "invernadero",
"fiwareServicePath": "ualiof",
"invjuancol": 143,
"recvTime": "2017-09-28T18:09:41.000Z",
"recvTimeTs": null
}
]
我的问题是这样的:
如何遍历我的温室对象并查找attrName
名称 sensor1 的字段并将其捆绑到名为 sensor1 的新字符串中,然后查找 sensor2 并将其捆绑到 string2 中?
但反过来,所有有attrName
= sensor1 的东西都必须在 String1 中,所有有attrName
= sensor2 的东西都将它存储在String2 中
我是这样遍历对象的,不知道是不是最正确。
for (let i = this.invernadero.length - 1; i >= 0; i--) {
console.log('LO QUE CONTIENE EL FOR' + i); // "4", "5", "6"
}
问候和谢谢。
你有一个温室类,但你并没有真正使用它,因为你没有使用它的构造函数。当您将响应从 JSON 传递到 Javascript 对象时,您正在创建具有相同属性的对象,但它们并不是真正的 Greenhouse 类。您可以做的是将 Greenhouse 声明为接口。
如果您只想保留
attrValue
,以防万一attrName=="sensor1"
您可以执行以下操作: