首页 > 解决方案 > 如何为变量简化代码?

问题描述

我有 6 个选项卡和每个 . 我正在从服务器接收数据并使用选项卡名称对其进行过滤。

     var a = {} // First Tab Object
    var b = {} // Second Tab Object
    var c = {} // Third Tab Object
    var d = {}// Fourth Tab Object
    var e = {};// Fifth Tab Object
    var f = {};// Sixth Tab Object

this.getService.getData().subscribe( res =>{
    let data = res.filter(data=>{
    return data.oType == this.tabclickedName
    }) 

    if (this.tabclickedName == 'One' ){
    this.a = data
    }
    else if (this.tabclickedName == 'Two' ){
    this.b = data 
    }
    else if (this.tabclickedName == 'Three' ){
    this.c = data 
    }
    else if (this.tabclickedName == 'Four' ){
    this.d = data 
    }
})

1. // 过滤服务中点击的标签的数据

2. // this.tabclickedName = 被点击的标签名称

问题 1 :- 现在我必须编写这样的 if else 语句来为指定选项卡分配数据

如何使这段代码更加动态,所以我不必像这样写 if else 语句?

问题 2:- 如何避免在这种情况下使用过滤器,并在使用管道或任何其他 rxjs 运算符的服务调用中使用 rxjs 运算符解决问题?

使用的方法: -

let hashTab = {One :'a',two :'b',three:'c',four:'d',five:'e',six:'f'}
let dataTabName = this.hashTab[this.tabclickedName];

这种方法中的问题:- dataTabName 是一个字符串,我希望插入该变量来存储数据

标签: javascriptjsonangulartypescript

解决方案


您可以通过让变量名称对应于选项卡名称来放弃 if-else。

然后你可以写:

this[this.tabclickedName] = data;

并完成。


推荐阅读