【问题标题】:For Loop : Iterating via character - Javascript [duplicate]For循环:通过字符迭代 - Javascript [重复]
【发布时间】:2013-03-23 13:19:13
【问题描述】:

我正在编写一个国际象棋应用程序,通过我正在使用的整数进行迭代,

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 的增量(在 for 循环 ch++ 中)是不可能的,因为它们不会作为整数存储在内存中。

我可以做些什么来实现这一目标?

for(var ch='a';ch &lt;= 'h';ch++){ // using ch directly... 直接的方式是否可行?而不是使用第三个变量 str="abcdefgh",然后使用 str。

【问题讨论】:

  • 发帖前请先搜索
  • @LightnessRacesinOrbit 是的,我搜索过。 function nextChar(c) { return String.fromCharCode(c.charCodeAt(0) + 1); } nextChar('a'); 这将给出答案。但我已经只在convertToChar 这样做了。如果有的话,我想要一个直接的方法,而不是调用一个函数。
  • 调用函数相当“直接”。

标签: javascript for-loop char


【解决方案1】:

您可以通过以下方式非常接近:

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";

【讨论】:

    【解决方案2】:

    您可以使用定义为的字符串:

    chars = "abcdefgh";
    

    然后指向该字符串中所需的字符:

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

    祝你好运!

    【讨论】:

      【解决方案3】:

      你可以像这样定义全局变量

      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];
      

      【讨论】:

        猜你喜欢
        • 2023-02-23
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多