使用JavaScript计算A,B,C,D而不是0,1,2,3 ......

M M*_*ler 9 javascript counter numbers count

这可能是一个不寻常的请求,但对于我的脚本,我需要一个按字母而不是数字递增的函数.例如:

这是一个数字示例:

var i = 0;
while(condition){
 window.write('We are at '+i);
 ++i;
}
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我想用字母来计算,比如Microsoft Excel,而不是数字.所以不是打印"我们在0","我们在1","我们在2"等,我需要打印"我们在A","我们在B","我们在C"等

为了模仿Excel(我能想到的唯一例子),在达到索引25(Z)后,我们可以转到'AA','AB','AC'等.

所以它会像这样工作:

var i = 0;
while(condition){
 window.write('We are at '+toLetter(i));
 ++i;
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以写一个函数然后将一个字母转换回一个数字,即toNumber('A')= 0或toNumber('DC')= 107(我认为),那就更好了.

谢谢!

Dag*_*bit 25

这是一个简单的递归函数,用于将数字转换为字母.

它是一个基础,所以1是A,26是Z,27是AA.

function toLetters(num) {
    "use strict";
    var mod = num % 26,
        pow = num / 26 | 0,
        out = mod ? String.fromCharCode(64 + mod) : (--pow, 'Z');
    return pow ? toLetters(pow) + out : out;
}
Run Code Online (Sandbox Code Playgroud)

这是一个匹配函数,用于将字符串转换回数字:

function fromLetters(str) {
    "use strict";
    var out = 0, len = str.length, pos = len;
    while (--pos > -1) {
        out += (str.charCodeAt(pos) - 64) * Math.pow(26, len - 1 - pos);
    }
    return out;
}
Run Code Online (Sandbox Code Playgroud)

测试:http://jsfiddle.net/St6c9/


err*_*ran 0

创建一个字母数组 A、B、C、D 等。然后使用 array[0] 调用 A,因为 0 是 A 的索引,您可以使用 array[i] 作为索引,只需验证,这样 i 就不能25岁以上。

使用以下任一方法创建数组:

var alphabet = new Array("A","B","C");

var alphabet = new Array(25);
alphabet[0] = "A";
alphabet[1] = "B";
alphabet[2] = "C";
Run Code Online (Sandbox Code Playgroud)

而不是toLetter(i);使用alphabet[i];