Switch alternativo

Às vezes, você se depara com a situação em que deseja definir algum valor de variável com base em outra variável, que pode realmente assumir muitos valores diferentes. Digamos que você tenha uma variável “alguns” que pode assumir os valores 1, 2, 3 e deseja definir o valor da variável “o” com base no valor da variável “alguns”. Você pode fazer uma instrução switch, se blocos ou operadores ternários. Mas existe outra maneira. Você pode fazer um objeto com valor de “algum”, valores para “o”:

var some = 1,
o
= {"1": "value1", "2": "value2", "3": "value3"}[some]

A mesma coisa se você quiser realizar alguma ação com base no valor de “algum”:

var some = "a",
a
= function() {console.log("a")},
b
= function() {console.log("b")},
c
= function() {console.log("c")};

({
"a": a,
"b": b,
"c": c
}[some]())

E quanto ao valor padrão, quando “algum” não é 1, 2 nem 3. O código pode ser reescrito como uma função anônima que verificará se o atributo existe ou não:

var some = 4, 
o
= (function () {
var opts = {
"1": "value1",
"2": "value2",
"3": "value3"
};

return (
typeof(opts[some])!=='undefined'?
opts
[some]:
"default"
)
}())

O que parece desagradável =)