Angular 6使用字符串作为变量

时间:2019-06-26 17:10:45

标签: angular typescript

我不确定如何表达这个问题,但我希望它是可以理解的

在Angular 6中,我有一个GET请求,该请求返回一个像这样的JSON对象


"fieldA": [
 {
   "displayValue": "value1", 
   "id": "A"
 }, 
 {
   "displayValue": "value2", 
   "id": "B"
 } 
  ], 
"fieldB": [
 {
   "displayValue": "value1", 
   "id": "0"
 }, 
 {
   "displayValue": "value2", 
   "id": "1"
 }, 
 ], 
"FieldC": [
 {
   "displayValue": "value1", 
   "id": "47"
 }, 
 {
   "displayValue": "valuen", 
    "id": "94"
 }, 
 ] 
}"fieldA": [
 {
   "displayValue": "value1", 
   "id": "A"
 }, 
 {
   "displayValue": "value2", 
   "id": "B"
 } 
  ], 
"fieldB": [
 {
   "displayValue": "value1", 
   "id": "0"
 }, 
 {
   "displayValue": "value2", 
   "id": "1"
 }, 
 ], 
"FieldC": [
 {
   "displayValue": "value1", 
   "id": "47"
 }, 
 {
   "displayValue": "valuen", 
    "id": "94"
 }, 
 ] 
}

如果我使用这段代码进行迭代

for(let item in this.response) {
    console.log(item);
    this.schFields.push(item);
}

我正确地获得了每个字段名称。可能会有数量可变的字段名,每个字段名的值都可变

现在我需要列出schFields数组中存储的每个字段的值

我看不到如何将从数组中读取的值用作变量

如果我知道字段名称,那么它可以正常工作,例如

for(let item of this.response.fieldA) {
    let itemelem = { "entity_id" : item.id, "entity_name" : item.displayValue };
    this.items.push(itemelem);
}

但是当fieldA部分需要为变量时,我无法找到解决方案。

2 个答案:

答案 0 :(得分:0)

不确定我是否正确理解了这个问题,但是您可以使用字符串访问对象属性。

const data = {fieldA: "data1", fieldb: "data2"};
console.log(data["fieldA"]); //will print data1

所以你可以这样做

const keys = Object.keys(this.schFields); // to get ["FieldA", "FieldB", ...]
keys.map(fieldKey => {
  console.log(this.response[fieldKey]);
});

答案 1 :(得分:0)

无论您在上一个for循环中尝试做什么,我都认为下面的代码会做到这一点。

for (let key in this.response) {
    for(let item of this.response[key]) {
        let itemelem = { "entity_id" : item.id, "entity_name" : item.displayValue };
        this.items.push(itemelem);
    }
}