Преобразование массива в оператор switch - PullRequest
0 голосов
/ 15 июля 2011

Какое самое быстрое решение для преобразования массива в оператор switch ?

var myArr = [x,y]

  case x:
    console.log("ok > x")
    break;
  case y:
    console.log("ok > y")
    break;

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

вот так

arr.map(function(I) { console.log('ok >' + I); });

Если я правильно угадаю относительно вашего вопроса.

2 голосов
/ 15 июля 2011

Какое самое быстрое решение для преобразования массива в оператор switch?

... просто для удовольствия, я принимаю ваш запрос буквально:

function arrToSwitch(a, x) {
  var code = [];
  code.push("var f = function (x) {");
  code.push(" switch (x) {");
  for (var i=0, j=a.length; i<j; i++) {
    code.push("  case " + a[i] + ": console.log('ok > " + a[i] + "'); break;");
  }
  code.push("  default: console.log('not found');");
  code.push(" }\n}");
  eval( code.join("\n") );
  return f;
}

var myArr = [1, 2, 3];
var test = arrToSwitch(myArr);
test(3)   // logs "ok > 3" to the console
test(4)   // logs "not found" to the console

console.log(test);
/* returns
function (x) {
 switch (x) {
  case 1: console.log('ok > 1'); break;
  case 2: console.log('ok > 2'); break;
  case 3: console.log('ok > 3'); break;
  default: console.log('not found');
 }
}
*/

Обратите внимание, что вышесказанное довольно бессмысленно, за исключением того, что уродливо и опасно.Используйте на свой страх и риск.

...