2011-07-15 76 views
0

什麼是將數組轉換爲switch語句的最快解決方案將數組轉換爲switch語句

var myArr = [x,y] 

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

你能解釋一下你想達到什麼嗎?數組是數據結構,開關是流控制指令 - 完全不同的東西。 – Mat

回答

3

這樣

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

如果我猜正確關於你的問題。

+0

請記住,您需要爲舊版瀏覽器手動添加'Array.map()':https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/map#Compatibility – gilly3

+0

不是舊的,而是三叉戟只有... grrrr ..無論如何,謝謝你的這個筆記+ @Joe! – mate64

2

什麼是將數組轉換爲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'); 
} 
} 
*/ 

注意,上面是相當沒有意義,超出了醜陋的和危險的那個。用於自己的危險。

+0

哈哈確定了它:) – mate64