2016-01-21 21 views
-1

我想減少多個組合變量的初始化。用多種組合分配變量的最佳方法

我的目標是創建一個函數並將變量傳遞給函數。 如果我將一個變量x傳入函數值(x);我應該輸出爲「123」。同樣,如果我將一個變量xy傳遞給函數值(xy),那麼我應該輸出爲「123456」。基本上,我想連接變量

這裏是JavaScript代碼作爲

var x = "123"; 
    var y = "456"; 
    var z = "789"; 
    var a = "0-+"; 

    var xy = x + y; 
    var yz = y + z; 
    var zx = z + x; 
    var xa = x + a; 
    var ya = y + a; 
    var za = z + a; 
    var ax = a + x; 
    var ay = a + y; 
    var az = a + z; 
    var xz = x + z; 
    var yx = y + x; 
    var zx = z + x; 
    var zy = z + y; 
    var xyz = x + y + z; 
    var xyza = x + y + z + a; 

    function value(input) { 
     console.log(input); 
    } 

樣品執行如下:

value(x); //output: 123 
    value(y); //output: 456 
    value(xy); //output: 123456 
    value(za); //output: 7890-+ 

在這種情況下,有很多的組合,爲上述變量我已經定義爲滿足所有可能的組合。我想驗證上述組合中的用戶輸入,並且我不想寫這麼多變量。有沒有可能的簡單解決方案? 請建議。謝謝

+0

「更好」是什麼意思? – epascarello

+0

我們必須編寫所有組合,例如4個變量和所有其他組合。所以,4 x 4 = 16個組合我必須定義變量。所以,我想知道是否有更好的想法。 – Kasino

+0

請提供一個實際的例子。您的代碼似乎與您所問的問題不相關。 – Dave

回答

0

我將宣佈一個全局對象的變量存儲爲鍵:

var globals = { 
    "x": "123", 
    "y": "456", 
    "z": "789" 
}; 

注意,您可以通過globals.x,或globals.y請參閱您的「變量」(你可以用更短的keywork減少更換globals代碼當然)。

用引號定義「變量名」是一點點額外的工作。 不過,現在你使用:

alert(Combinate("xz")); 
// output: 123789 

有了這樣一個功能:

function Combinate(phrase) { 
    result = ""; 
    for (var i = 0, len = phrase.length; i < len; i++) { 
    result += globals[phrase[i]]; 
    } 
    return result; 
} 

這裏有一個JSFiddle

+0

謝謝..完美的作品。 – Kasino

0

你會想要使用某種形式的迭代數組或對象。作爲示例:

var x = "dave"; 
var y = "bill"; 
var z = "john"; 
var a = "suzan"; 
var people = [x,y,z,a]; 

for(i=0; i<people.length; i++) { 
    for(x=0; x<people.length; x++) { 
     value(people[i] + people[x]); 
     for(y=0; y<people.length; y++) { 
      value(people[i] + people[x] + people[y]); 
      for(z=0; z<people.length; z++) { 
       value(people[i] + people[x] + people[y] + people[z]); 
      } 
     } 
    } 
} 

// not sure why you'd have a function to wrap console.log(), but... 
function value(input) { 
    console.log(input); 
} 

請參閱in action on jsFiddle

有更優雅的路徑,但這應該讓你學習JavaScript。

+0

謝謝。我正在創建函數...因此,如果用戶想要一起輸入xy變量。他應該同時獲得x值+ y值。例如。值(xy)應該是davebill。價值(yx)應該是billdave。在這種情況下,輸入是xy。 – Kasino

+0

@GoldenWave這聽起來像你只是想讓別人爲你寫代碼。我已經超出了本網站的範圍。我會建議嘗試一些JS教程..等以學習語言。 – Dave

相關問題