2013-04-02 120 views
1

我寫的國際象棋程序,在通過整數遍歷我使用,For循環:通過字符迭代 - 使用Javascript

for(var i =0; i<8; i++) { var ch = convertToCharector(i); //using ch here... 

但它會更適合我,如果我不喜歡

for(var ch='a';ch <= 'h';ch++){ // using ch directly... 

其中提高了可讀性。

但在JavaScript中增量的char(在循環ch ++中)是不可能的,因爲它們不作爲整數存儲在內存中。

我該怎麼做才能做到這一點?

是否for(var ch='a';ch <= 'h';ch++){ // using ch directly...方式直接的方式是不可能的?而不是使用第三個變量str =「abcdefgh」,然後使用str。

+1

請在發佈前進行搜索。 –

+0

@LightnessRacesinOrbit雅我沒有搜索。 'function nextChar(c){0}返回String.fromCharCode(c.charCodeAt(0)+ 1); } nextChar('a'); '這會給出答案。但我已經在'convertToChar'中做了這個。我想要一個直接的方式,如果有的話,而不是調用一個函數。 –

+0

調用函數相當「直接」。 –

回答

2

你可以通過像八九不離十:

for(var ch = 'a'.charCodeAt(0); ch <= 'h'.charCodeAt(0); ch++) { 

但如果可讀性所有你後,我不知道,如果上面的幫助。你可能會喜歡的東西更好:

var board = { a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6, h: 7 }; 
for(var ch = board.a; ch <= board.h; ch++) { 
} 

如果你需要一個解析器可能是這個樣子:

board.get = function(i) { return String.fromCharCode(97+i); } 

... 

board.get(board.a) // "a"; 
1

你可以使用一個字符串定義爲:

chars = "abcdefgh"; 

然後指向該字符串中所需的字符:

for (int i = 0; i < 8; i++) { 
canvas.drawText("" + chars.charAt(i), x, y * 30, Paint); // This draws the characters vertically 
} 

祝你好運!

0

您可以定義全局變量,這樣

var _LETTERS_='abcdefgh', 
    _A_=0, 
    _B_=1, 
    _C_=2, 
    _D_=3, 
    _E_=4, 
    _F_=5, 
    _G_=6, 
    _H_=7; 

,並利用它們這樣...

for(var i=_A_;i<=_H_; i++) { var j=_LETTERS_[i];