Reputation: 157
I have a switch statement that I'd like to replace with an object literal but because multiple assignments are made for each case, I don't know how to do it.
switch (roll1) {
case 21:
rain = 1.25;
break;
case 22:
rain = 1.5;
solid = "light";
break;
case 23:
rain = 1.75;
solid = "light";
break;
case 24:
rain = 2;
solid = "light";
break;
case 25:
rain = 2.25;
solid = "medium";
break;
case 26:
rain = 2.5;
solid = "medium";
hook = 1;
break;
case 27:
rain = 2.75;
solid = "medium";
hook = 5;
break;
case 28:
rain = 3;
solid = "heavy";
hook = 10;
break;
case 29:
rain = 3.25;
solid = "heavy";
hook = 15;
break;
case 30:
rain = 3.5;
solid = "heavy";
hook = 20;
}
return [rain,solid,hook];
Note: solid & hook are given default values before the switch statement. I was looking at this example:
const dogSwitch = (breed) => ({
"border": "Border Collies are good boys and girls.",
"border2": "Border Collies are good boys and girls.",
"pitbull": "Pit Bulls are good boys and girls.",
"german": "German Shepherds are good boys and girls."
})[breed]
console.log(dogSwitch("border2"))
But each line of the object literal only assigns one value, not multiple. Please advise.
Upvotes: 1
Views: 370
Reputation: 1509
You could move it to Objects to handle it.
const getRollProps = (roll1) => {
const caseList = {
"21": {
"rain": 1.25
},
"22": {
"rain": 1.5,
"solid": "light"
},
"23": {
"rain": 1.75,
"solid": "light"
},
"24": {
"rain": 2,
"solid": "light"
},
"25": {
"rain": 2.25,
"solid": "medium"
},
"26": {
"rain": 2.5,
"solid": "medium",
"hook": 1
},
"27": {
"rain": 2.75,
"solid": "medium",
"hook": 5
},
"28": {
"rain": 3,
"solid": "heavy",
"hook": 10
},
"29": {
"rain": 3.25,
"solid": "heavy",
"hook": 15
},
"30": {
"rain": 3.5,
"solid": "heavy",
"hook": 20
}
};
const {rain, solid, hook} = (caseList[roll1] || {});
return [rain, solid, hook];
}
getRollProps(22);
Upvotes: 1
Reputation: 49975
You can define object like below and then use Object destructuring to retrieve values for specified variables:
let doc = { 23: { rain: 1.25 }, 22: { rain: 1.5, solid: "light" }, 29: { rain: 3.25, solid: "heavy", hook: 20 } };
let {rain, solid, hook} = doc[29];
console.log(solid);
console.log(rain);
console.log(hook);
Upvotes: 1