如何改进switch语句或替换它?

1 javascript typescript

我有开关,它看起来很长:

switch (+f.level) {
  case 10:
    this.region = f
    break

  case 20:
    this.aregion = f
    break

  case 30:
    this.district = f
    break

  case 40:
    this.city = f
    break

  case 50:
    this.intraCityTerritoryn = f
    break
}
Run Code Online (Sandbox Code Playgroud)

我试图修改它:

public directory = {
  {10: this.region}, 
  {20: this.aregion}, 
  {30: this.district}, 
  {40: this.city}
};
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过 key 获取 varaible 并分配f

hgb*_*123 7

您可以使用具有f.level(数字值)和预期对象属性的键值对的查找对象

const lookup = {
  10: "region",
  20: "aregion",
  30: "district",
  40: "city",
  50: "intraCityTerritoryn",
}

this[lookup[+f.level]] = f
Run Code Online (Sandbox Code Playgroud)

对于default等价情况(因为this[undefined] = f仍然是有效的赋值表达式)

if (lookup[+f.level] !== undefined) {
  this[lookup[+f.level]] = f
} else {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

参考: