Skip to content
Advertisement

How to replace switch with Object literals

When i rewriting my old code, i had a problem i don’t know to to optimize this code in past i use switch,but now i know about Object literals, my code:

switch(true) {
 case data.rep <= -30:
    reputation_text = this.language.pf.reputation.satan;
    break;
 case data.rep >= -10 && data.rep <= -5:
    reputation_text = this.language.pf.reputation.devil;
    break;
 //other....

 case data.rep >= 30:
 reputation_text = this.language.pf.reputation.angel;
 break;
}

How i can replace him with object literals?

Advertisement

Answer

You can write the cases as object literals and iterate over them:

const { reputations } = this.language.pf;

type MapEntry = { min: number; max: number; value: keyof typeof reputations };

const mapTable: MapEntry[] = [
  { min: Number.MIN_VALUE, max: -30, 
    value: "satan" },
  { min: -10, max: -5, 
    value: "devil" },
  // ...
  { min: 30, max: Number.MAX_VALUE, 
    value: "angel" },
];

for (const entry of mapTable) {
  if (Data.rep >= entry.min && Data.rep <= entry.max) {
    reputation_text = reputations[entry.value];
    break;
  }
}

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement