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:
JavaScript
x
14
14
1
switch(true) {
2
case data.rep <= -30:
3
reputation_text = this.language.pf.reputation.satan;
4
break;
5
case data.rep >= -10 && data.rep <= -5:
6
reputation_text = this.language.pf.reputation.devil;
7
break;
8
//other....
9
10
case data.rep >= 30:
11
reputation_text = this.language.pf.reputation.angel;
12
break;
13
}
14
How i can replace him with object literals?
Advertisement
Answer
You can write the cases as object literals and iterate over them:
JavaScript
1
22
22
1
const { reputations } = this.language.pf;
2
3
type MapEntry = { min: number; max: number; value: keyof typeof reputations };
4
5
const mapTable: MapEntry[] = [
6
{ min: Number.MIN_VALUE, max: -30,
7
value: "satan" },
8
{ min: -10, max: -5,
9
value: "devil" },
10
// ...
11
{ min: 30, max: Number.MAX_VALUE,
12
value: "angel" },
13
];
14
15
for (const entry of mapTable) {
16
if (Data.rep >= entry.min && Data.rep <= entry.max) {
17
reputation_text = reputations[entry.value];
18
break;
19
}
20
}
21
22